>>
演算子をオーバーロードしようとしています。2つのプライベート変数を持つクラスがあります。
Class Complex
{
private:
double real;
double imaginary;
};
さらに、>>
演算子をオーバーロードするフレンド関数があります。
friend istream & operator>>(istream &is, Complex &c)
関数の実装では、オブジェクトの変数に書き込むために多くの方法を試しましたc
が、エラーが発生し続けますno operator >> matches these operands
周りを見回してreference
、変数のaに書き込む必要があることを読んだので、次のことを試しました。
istream & operator>>(istream &is, Complex &c)
{
using std::cout;
double &r = c.real;
cout << "real: " << is >> r;
return is;
}
ただし、これでも同じエラーが発生します。is >> c.real
試してもうまくいかなかったので少し混乱しました。
同様のSO質問の回答の1つで、誰かがローカル変数に書き込み、オブジェクト変数を次のように設定することを提案しました。
double d;
cin >> d;
setReal(d);
メソッドを使用したり、変数をローカルに設定したりするのではなく、これを実現するためのより簡単な方法を見つけようとしています。
解決策は単純なものかもしれませんが、私は実際にはC ++の初心者なので、気楽にやってください:P。
テストケース:
using std::cin;
Complex c;
cin >> c;
正確なエラーメッセージ:
Error 1 error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'std::basic_ostream<_Elem,_Traits>' (or there is no acceptable conversion)