【发布时间】:2017-05-07 21:17:56
【问题描述】:
#include <iostream>
#include <sstream>
using namespace std;
class Rupee{
private:
int number;
int number2;
int number3;
public:
Rupee()
{
}
friend ostream &operator<<( ostream &os, const Rupee &e );
friend istream &operator>>( istream &is, const Rupee &e );
};
ostream& operator << (ostream & os ,const Rupee &e)
{
os<<endl << e.number << endl;
os << e.number2<< endl;
os << e.number3<< endl;
return os;
}
istream& operator >> (istream & is ,const Rupee &e)
{
is>>e.number>>e.number2>>e.number3;
return is;
}
int main()
{
Rupee o1;
cin >> o1;
cout << o1;
}
你好,
我正在尝试使运算符 << 重载。当我运行该程序时,该程序不会为" << " 运行,但对于" >> " 运行良好。
我在哪里做错了?我是否为重载函数使用了正确的 istream 和 ostream 类?
【问题讨论】:
-
你的编译器是如何编译你的提取操作符的实现的:它应该在
istream& operator >> (istream & is ,const Rupee &e)函数中抛出错误... -
这段代码根本无法编译。
-
它没有这样做。问题出在哪里?
-
@MuhammadYasirJaved,然后,快点,快点,删除编译器和它附带的每个相关文件。使用较新的编译器。顺便说一句,那是哪个编译器?什么版本?
-
编译问题是将 const & 传递给 >> 运算符。它需要设置值,所以它不能是 const
标签: c++ oop operator-overloading