1

operator + - *以下のように as フレンドをオーバーロードして、 Complex number class を作成しようとしていました。

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;

エラーが発生します:

'ComplexNumber' から 'ComplexNumber&' への引数 1 の既知の変換はありません</p>

問題は、の戻り値が であることはわかっていますoperator+ComplexNumberostream演算子にはComplexNumber&.

これに対処する方法がわかりません。ありがとう

4

1 に答える 1