我正在尝试重载我的 << 运算符,但我想使用辅助函数,因为我正在处理一棵树,这样我的辅助函数 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);
哦,这是错误:
没有用于调用“Polynomial::printPoly(Polynomial::Node*&, std::ostream&) const
”的匹配函数
最佳答案
将 const
添加到函数声明的末尾:
void Polynomial::printPoly(Node* p, std::ostream &out) const
{
...
}
这个额外的 const
告诉编译器您不会修改 printPoly
方法中的 Polynomial
对象。
关于c++ - 没有匹配的函数调用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035447/