[英]Ostream overloading operator on a linked list
我在链表中有一个多项式实现,想执行std::ostream
重载操作,但是它给我一个错误,即no match for 'operator<<' in 'std::cout << p5'
那是我的实现,但是当我通过cout << p5
对其进行测试时,出现了上述错误。
更新:头文件:
struct term{
double coef;
unsigned deg;
struct term * next;
};
class Polynomial {
public:
constructors etc
overloading functions
friend ostream& operator << (ostream& out,const term& object);
}
然后在其他文件poly.cpp我有:
ostream & operator << (ostream& out, const Polynomial object){
term* q = object.getptr();
if (object.getptr() == NULL)
out << "( )";
else
while(q != NULL)
{
out << q->coef << "x^" << q->deg << " ";
q = q->next;
}
return out;
}
在main.cpp多项式p5中,然后添加了一些术语和cout << p5
但出现错误。
我认为是您的声明引起了问题:
friend ostream & operator << (ostream & out, const term & object);
和
ostream & operator << (ostream & out, const Polynomial & object);
这些不匹配。 一种是使用term
对象,而另一种是使用Polynomial
对象。 我假设您希望此函数使用term对象,因为该函数使用特定于struct term
。 因此,更改后者以接受term
对象:
ostream & operator << (ostream & out, const term & object);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.