我试图编写一个Complex Number类,将operator + - *
重载为 friend ,如下所示:
ComplexNumber operator+(const ComplexNumber &c1, const ComplexNumber& c2)
{
return ComplexNumber(c1._r+c2._r, c1._i+c2._i);
}
ostream& operator << ( ostream &out, ComplexNumber &c){
out << c.getReal() <<'+'
<< c.getImg() <<'I' << std::endl;
}
我在执行过程中没有遇到任何问题:
ComplexNumber c1(1,2);
cout << c1 << endl;
但是当我尝试执行以下操作时:
ComplexNumber c2(2,1);
cout << c1 + c2 << endl;
我收到一个错误:
我知道问题是
operator+
的返回值是ComplexNumber
,但是ostream
运算符需要ComplexNumber&
。我不知道该如何处理。谢谢
最佳答案
我不知道为什么会说参数1,但是您应该使输出重载采用const引用:
ostream& operator << ( ostream &out, const ComplexNumber &c){
^^^^^
更好,因为可以使用临时文件,而您无需对其进行修改。
关于c++ - 运算符(operator)重载为好友,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16473667/