I have two classes; a Term class, and a Poly class (which is just a list of terms). I wrote two overloaded << operators for displaying them, one takes in a term, the other takes in a poly. The term overloaded << is declared a friend in the term class, and the poly overloaded << is devlared a friend in the poly class. Any ideas what is wrong?

Code:
#include "term.h"
#include "poly.h"

ostream & operator << (ostream &disp, const Term &rhs)
{
	int c = rhs.getCoef();
	int x = rhs.getExpn();
	if (c == 0) { return disp; }
	else if (c == 1) { disp << "X^" << x; }
	else if (x == 0) { disp << c; }
	else if (x == 1) { disp << c << "X"; }
	else { disp << c << "X^" << x; }
	return disp;
}

ostream & operator << (ostream &disp, const Poly &rhs)
{
	Iterator<Term> it(rhs);
	it.seekStart();
	do
	{
		disp << it.getData() << " ";   //I get this line amibiguous <<
	} while (it.next());
	return disp;
}