我有以下代码块试图重载>>操作者:
istream &operator >> (istream &stream, const Currency &obj){
cout << "Dollars: ";
stream>>obj.dollars;
cout<< "Cents: ";
stream>> obj.cents;
return stream;
}
但是当我从主程序中调用cin>>newMoney
时,它会在如下所示的无限循环中一遍又一遍地重复“DOLLARS:”:
有什么想法吗?
答案 0 :(得分:5)
我敢打赌你有一个带有'int'的Currency构造函数。因此stream>>obj.dollars;
与stream>>Currency(obj.dollars);
相同。您粘贴的功能输出“Dollars:”然后调用自身,再次输出“Dollars:”然后重复。
我建议制作构造函数explicit,这样就不会惹恼你。
答案 1 :(得分:4)
您的代码中没有足够的信息(截至目前)。直到你发布更多代码,我只能这样说,这对你来说也很重要:因为你重载>>
来接受输入,对象obj
应该由非传递-const 引用,因此从第二个参数中删除const
,并使其如下所示:
istream &operator >> (istream &stream, Currency &obj)