运算符重载问题C++
Operator overloading problems C++
我有一个多项式类,并且重载了+、-和*运算符,以及<lt;操作人员这一切似乎都很好,直到我尝试输出一个表达式,比如poly1+poly2,而不仅仅是一个多项式对象。
这是我的附加操作员代码:
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);
}
这是我的<lt;操作员代码(我已经有一个正确工作的打印成员功能):
ostream& operator<< (ostream& out, Polynomial& poly){
poly.print();
return out;
}
当我主要尝试这样做时,问题就出现了:
cout << poly1+poly2;
但如果我只是这样做,效果很好:
cout << poly1;
错误消息显示:二进制表达式('ofstream'(又名'basic_ofstream')和('Polynomial')的操作数无效
对于特定的函数,它应该使用:候选函数不可行:第二个参数需要一个l值
谢谢!
您需要:
ostream& operator<< (ostream& out, Polynomial const& poly) {
这是因为临时对象不能绑定到非常量引用。
请注意,这意味着您还必须使Polynomial::print()
函数为const
。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 基于boost的程序的静态链接——zlib问题
- C++格式化输出问题
- 使用mongocxx驱动程序时包含头文件问题