我想重載>>運算符使用它像cin與我的類。下面是代碼:不能重載>>運算符與istream C++
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:二進制‘>>’:沒有運營商發現這需要基本型(__cdecl *)(無效)的」右手操作'(或沒有可接受的轉換)「 和Intellisense表示沒有運算符'>>'匹配這些操作數。
ostream版本似乎沒有任何問題。
爲什麼?
@DouglasEdward沒問題。我看到你編輯了Q,所以問題2)在Q中只是一個錯字,而不是你的代碼,1)是真正的問題?遲早會發生在任何人身上:) –