我试图写一个复数类,重载operator + - *
如下:
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;
我收到一个错误:
没有已知的参数 1 从“ComplexNumber”到“ComplexNumber&”的转换</p>
我知道问题是返回值operator+
是 a ComplexNumber
,但ostream
操作员需要 a ComplexNumber&
。
我不知道该如何处理。谢谢