链表上的Ostream重载运算符

时间:2012-11-29 22:08:20

标签: c++

我在链接列表中有一个多项式实现,并希望执行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,但我收到了错误。

1 个答案:

答案 0 :(得分:1)

我认为这是导致问题的声明:

friend ostream & operator << (ostream & out, const term & object);

ostream & operator << (ostream & out, const Polynomial & object);

这些不匹配。一个使用term对象,后者使用Polynomial对象。我假设您希望此函数使用术语对象,因为该函数使用特定于结构term的数据成员。因此,更改后者以接受term对象:

ostream & operator << (ostream & out, const term & object);