为什么cout
在无法使C ++(>>
)的istream运算符重载的函数中起作用?我应该怎么做才能使其正常工作?
在以下行中:cout >> "Enter x and y: "
显示错误?
为什么?
我该如何解决?
这是overload >>
和operator <<
的代码
#include<iostream>
using namespace std;
class myClass
{
int x,y;
public:
myClass(int a,int b)
{
x=a;y=b;
}
friend istream &operator>>(istream &in, myClass &ob);
friend ostream &operator<<(ostream &out, myClass ob);
};
istream &operator>>(istream &in,myClass &ob)
{
cout >> "Enter x and y: ";
in >> ob.x;
in >> ob.y;
return in;
}
ostream &operator<<(ostream &out,myClass ob)
{
out << ob.x << " " << ob.y << endl;
}
int main()
{
myClass ob(10,20);
cout << ob;
cin >> ob;
cout << ob;
}
答案 0 :(得分:1)
您的错误是您混淆了<<
和>>
,cout>>"Enter x and y: ";
应该是cout << "Enter x and y: ";
在重载的operator>>
中提示用户也是不好的风格。如果您的>>
被用来读取文件怎么办?您不希望随后提示用户。因此,将cout<<"Enter x and y: ";
移到它所属的主函数中。
赞
istream &operator>>(istream &in,myClass &ob)
{
in>>ob.x;
in>>ob.y;
return in;
}
int main()
{
myClass ob(10,20);
cout<<ob;
cout<<"Enter x and y: ";
cin>>ob;
cout<<ob;
return 0;
}