0

我正在尝试重载我的 << 运算符,但我想使用辅助函数,因为我正在使用一棵树,这样我的辅助函数 fn. 可以是递归的。但是,当我尝试从操作员函数调用帮助程序时,我得到了这个没有匹配的函数调用错误。

std::ostream& operator<<(std::ostream& out, const Polynomial &rhs)
{
    Polynomial::Node *p = rhs.root;
    rhs.printPoly(p, out);
    return out;
}


void Polynomial::printPoly(Node* p, std::ostream &out)
{
    if(p == nullptr)
        return;
    printPoly(p->left, out);
    out << p->item->coeff() << "x^" << p->item->x();
    printPoly(p->right, out);
}

并在 .h 文件中

friend std::ostream& operator<<(std::ostream& out, const Polynomial& rhs);

哦,这是错误:

no matching function for call to 'Polynomial::printPoly(Polynomial::Node*&, std::ostream&) const'

4

2 回答 2

2

添加const到函数声明的末尾:

void Polynomial::printPoly(Node* p, std::ostream &out) const
{
    ...
}

这个额外的const告诉编译器你不会修改方法Polynomial中的对象printPoly

于 2013-11-17T20:03:28.327 回答
0

啊,我刚刚在 Polynomial &rhs 的声明中去掉了 const,看起来很开心。

于 2013-11-17T20:03:35.703 回答