猿问

求助一个关于重载运算符>>和<<的问题,请问下面内容该怎么解决

/*下面这个程序包括两个文件,一个是头文件"long_int.h",他的功能是定义一个类,重载运算符>>和<<,还有一个是"mian.cpp",主程序。
错误有6个,系统提示我说返回的参数过多,请高手帮忙解决一下!*/
"long_int.h"
#ifndef LONG_INT
#define LONG_INT
#include<iostream>
#include<vector>
using namespace std;
class long_int
{
public:
istream &operator >>(istream &in,long_int &l);
ostream &operator <<(ostream &out,long_int &l);
private:
vector<char>longint;
};

istream & long_int::operator >>(istream &in,lont_int &l)
{
char input;
in>>input;
while(input!='#')
{
if(input>='0'&&input<='9')
l.longint.push_back(input);
in>>input;
}
return in;
}

ostream & long_int::operator <<(ostream &out,long_int &l)
{
for(int i=0;i<l.longint.size();i++)
out<<l.longint[i];
return out;
}

#endif
"main.cpp"
#include "long_int.h"
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
long_int a;
cin>>a;
cout<<endl;
cout<<a;
cout<<endl;
return 0;
}

慕码人2483693
浏览 252回答 2
2回答

Smart猫小萌

改成友员函数,如下://"long_int.h"#ifndef LONG_INT#define LONG_INT#include<iostream>#include<vector>using std::istream;using std::ostream;using std::vector;class long_int{public:friend istream &operator >>(istream &in,long_int &l);friend ostream &operator <<(ostream &out,long_int &l);private:vector<char> longint;};istream& operator >>(istream &in, long_int &l){char input;in>>input;while(input!='#'){if(input>='0'&&input<='9')l.longint.push_back(input);in>>input;}return in;}ostream & operator <<(ostream &out,long_int &l){for(int i=0;i<l.longint.size();i++)out<<l.longint[i];return out;}#endif//"main.cpp"#include "long_int.h"#include <iostream>using std::cout;using std::cin;using std::endl;int main(){long_int a;cin>>a;cout<<endl;cout<<a;cout<<endl;return 0;}

MMMHUHU

重载运算符>>和<<只能有一个参数,你的有2个。就像运算符+-*/一样,2个参数那是友元函数的形式。
随时随地看视频慕课网APP
我要回答