我试图编写一个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/

10-09 07:13