重载>>的问题操作者

时间:2011-10-16 04:40:31

标签: c++

我有以下代码块试图重载>>操作者:

 istream &operator >> (istream &stream, const Currency &obj){
  cout << "Dollars: ";
  stream>>obj.dollars;
  cout<< "Cents: ";
  stream>> obj.cents;
  return stream;
 }

但是当我从主程序中调用cin>>newMoney时,它会在如下所示的无限循环中一遍又一遍地重复“DOLLARS:”: enter image description here 有什么想法吗?

2 个答案:

答案 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)