我正在尝试重载 >> 运算符,以便在我的班级中像 cin 一样使用它。这是代码:
class Base {
public:
int mx;
Base() {}
Base(int x) : mx(x) {}
friend std::istream &operator>>(std::istream &, Base &);
friend std::ostream &operator<<(std::ostream &, const Base &);
};
std::istream &operator >>(std::istream &in, Base &object) {
in >> object.mx;
return in;
}
std::ostream &operator <<(std::ostream &out, const Base &object) {
out << object.mx;
return out;
}
int main() {
Base test();
std::cin >> test;
std::cout << test;
system("PAUSE");
return 0;
}
当我尝试编译时,我得到“错误 C2679: binary '>>' : no operator found 它采用'Base (__cdecl *)(void)' 类型的右手操作数(或没有可接受的转换)”和 Intellisense表示没有运算符 '>>' 匹配这些操作数。
ostream 版本似乎没有任何问题。
为什么?