gpt4 book ai didi

c++ - 运算符重载问题 C++

转载 作者:行者123 更新时间:2023-11-28 00:30:19 25 4
gpt4 key购买 nike

我有一个 Polynomial 类,我重载了 +、- 和 * 运算符以及 << 运算符。在我尝试输出一个表达式(例如 poly1+poly2 而不仅仅是一个 Polynomial 对象)之前,一切似乎都运行良好。

这是我的加法运算符代码:

Polynomial operator+ (const Polynomial& poly1, const Polynomial& poly2){
vector<int> final_coeffs;

if (poly1.Degree()>poly2.Degree())
{
for (int i=0; i<=poly2.Degree(); i++)
final_coeffs.push_back(poly2.Coefficient(i) + poly1.Coefficient(i));
for (int i=poly2.Degree()+1; i<=poly1.Degree(); i++)
final_coeffs.push_back(poly1.Coefficient(i));
}

else
{
for (int i=0; i<=poly1.Degree(); i++)
final_coeffs.push_back(poly1.Coefficient(i) + poly2.Coefficient(i));
for (int i=poly1.Degree()+1; i<=poly2.Degree(); i++)
final_coeffs.push_back(poly2.Coefficient(i));
}

return Polynomial(final_coeffs);
}

这是我的 << 运算符(operator)代码(我已经有一个正常工作的 print 成员函数):

ostream& operator<< (ostream& out, Polynomial& poly){
poly.print();
return out;
}

当我尝试在 main 中执行此操作时出现问题:

cout << poly1+poly2;

但如果我这样做的话效果很好:

cout << poly1;

错误消息说:二进制表达式的无效操作数('ofstream'(又名'basic_ofstream')和('Polynomial')

对于它应该使用的特定函数:候选函数不可行:期望第二个参数有一个左值

谢谢!

最佳答案

你需要:

ostream& operator<< (ostream& out, Polynomial const& poly) {

这是因为临时对象不能绑定(bind)到非常量引用。

请注意,这意味着您还必须使 Polynomial::print() 函数成为 const

关于c++ - 运算符重载问题 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23209040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com