为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕码人2483693 2021-12-30 11:07:59
/*下面这个程序包括两个文件,一个是头文件"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;}
查看完整描述

2 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

改成友员函数,如下:
//"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;
}



查看完整回答
反对 回复 2022-01-03
?
MMMHUHU

TA贡献1834条经验 获得超8个赞

重载运算符>>和<<
只能有一个参数,你的有2个。
就像运算符+-*/一样,
2个参数那是友元函数的形式。

查看完整回答
反对 回复 2022-01-03
  • 2 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信