我一直在尝试使>>
运算符超载。我有一个有两个私有变量的类:
Class Complex
{
private:
double real;
double imaginary;
};
此外,我还有一个重载>>
运算符的友元函数:
friend istream & operator>>(istream &is, Complex &c)
在函数的实现中,我尝试了很多方法来写入对象的变量,c
但我一直收到错误no operator >> matches these operands
我环顾四周,读到我需要写入一个reference
变量,所以我尝试了以下方法:
istream & operator>>(istream &is, Complex &c)
{
using std::cout;
double &r = c.real;
cout << "real: " << is >> r;
return is;
}
然而,这仍然给了我同样的错误。当我尝试is >> c.real
但没有工作时,我有点困惑。
在类似的 SO question 中的一个答案中,有人建议写入局部变量并设置对象变量,例如:
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)