求教关于重载运算符<<的问题

Victor_Dinho 2009-08-17 09:40:46
我是采用友元函数来重载<<的。
在类的定义那里,我是这样写的:
friend std::ostream &operator <<(std::ostream &output, BigNum &bignum);


在实现那里,我是这样写的:
std::ostream &operator <<(std::ostream &output, BigNum &bignum)
{
int size = bignum.getSize();
for (int i=0; i<size; i++)
{
output<<bignum.getNum(i);
}
return output;
}


但编译的时候,报告以下错误:
H:\mywork\MyProgram\Caculator\Caculator.cpp|99|error: `std::ostream& BigNum::operator<<(std::ostream&, BigNum&)' must take exactly one argument|
H:\mywork\MyProgram\Caculator\Caculator.cpp|99|error: no `std::ostream& BigNum::operator<<(std::ostream&, BigNum&)' member function declared in class `BigNum'|
H:\mywork\MyProgram\Caculator\Caculator.cpp||In member function `std::ostream& BigNum::operator<<(std::ostream&, BigNum&)':|
H:\mywork\MyProgram\Caculator\Caculator.cpp|100|error: 'class BigNum' has no member named 'getSize'|
H:\mywork\MyProgram\Caculator\Caculator.cpp|109|error: no `int BigNum::getSize()' member function declared in class `BigNum'|
H:\mywork\MyProgram\Caculator\Caculator.cpp|109|error: `int BigNum::getSize()' and `int BigNum::getSize()' cannot be overloaded|
||=== Build finished: 5 errors, 0 warnings ===|

请问是为什么呢?谢谢。
...全文
193 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Victor_Dinho 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zgjxwl 的回复:]
这些错误都提示的很清楚啊。。
友元需要注意的。。
参数个数与成员函数不同的问题。

友元,在vc6中有bug,会提示不能访问类的保护和私有成员。具体可以把实现写在类里。
[/Quote]

恩~~其实我当时是写错了,写成了
std::ostream& BigNum::operator <<(std::ostream &output, BigNum &bignum)
{
int size = bignum.getSize();
for (int i=0; i<size; i++)
{
output<<bignum.getNum(i);
}
return output;
}



所以程序就把这个函数当成是成员函数,所以就报告说参数个数错误~~后来把BigNum::去掉就行了。

你后面说的那个问题我就没有遇到,我不是用vc6的~~
Victor_Dinho 2009-08-17
  • 打赏
  • 举报
回复
结贴时间到~~
zgjxwl 2009-08-17
  • 打赏
  • 举报
回复
这些错误都提示的很清楚啊。。
友元需要注意的。。
参数个数与成员函数不同的问题。

友元,在vc6中有bug,会提示不能访问类的保护和私有成员。具体可以把实现写在类里。
rlxtime 2009-08-17
  • 打赏
  • 举报
回复
跟着接!
jhony_lee 2009-08-17
  • 打赏
  • 举报
回复
接分吧
wanjingwei 2009-08-17
  • 打赏
  • 举报
回复
接个吧
ArmStronger 2009-08-17
  • 打赏
  • 举报
回复
跟着接!
xingzhe2001 2009-08-17
  • 打赏
  • 举报
回复
接!
one_snail 2009-08-17
  • 打赏
  • 举报
回复
jf
飞天御剑流 2009-08-17
  • 打赏
  • 举报
回复
接!
Victor_Dinho 2009-08-17
  • 打赏
  • 举报
回复
这个帖子拿来散分吧~~~11点结贴~~~
coolyama 2009-08-17
  • 打赏
  • 举报
回复
看来楼主已经自己解决了,呵呵~
Victor_Dinho 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dinjay 的回复:]
BigNum 是什么?类型?类?
[/Quote]

是我自定义的一个类~~~发上来的其实没错,但自己把自己搞乱了~~~
Victor_Dinho 2009-08-17
  • 打赏
  • 举报
回复
……
没事了~~~
dinjay 2009-08-17
  • 打赏
  • 举报
回复
BigNum 是什么?类型?类?
Victor_Dinho 2009-08-17
  • 打赏
  • 举报
回复
没人知道吗?

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧