一段小程序,编译出错,大家帮忙看看.

gwang119 2006-08-07 03:53:03
#include <iostream>

using namespace std;

class MulSum
{
public:
MulSum();
MulSum(int i){a=i;}
friend MulSum operator ()(MulSum &mula,MulSum &mulb);
void print(){cout<<a<<endl;}
private:
int a;
};

MulSum operator ()(MulSum &mula,MulSum &mulb)
{
return MulSum(mula.a*mula.a + mulb.a*mulb.a);
}

void main()
{
int x;
MulSum a(8),b(6);
MulSum c;
c=(a,b);
c.print();
cin>>x;
}
...全文
138 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
genius_hb 2006-08-08
  • 打赏
  • 举报
回复
to:liufan2005()
你重载友员试试??
gwang119 2006-08-07
  • 打赏
  • 举报
回复
真的是语义的问题,我将重载的操作符变成+,就没有错误了!
谢谢!
TO:ykzhujiang(朱朱)


#include <iostream>

using namespace std;

class MulSum
{
public:
MulSum(){a=0;};
MulSum(int i){a=i;}
friend MulSum operator +(MulSum &mula,MulSum &mulb);
void print(){cout<<a<<endl;}
private:
int a;
};

MulSum operator +(MulSum &mula,MulSum &mulb)
{
return MulSum(mula.a*mula.a + mulb.a*mulb.a);
}

void main()
{
int x;
MulSum a(8),b(6);
MulSum c;
c=a+b;
c.print();
cin>>x;
}
ykzhujiang 2006-08-07
  • 打赏
  • 举报
回复
operator()不允许这种方式使用,会引起语义混乱
gwang119 2006-08-07
  • 打赏
  • 举报
回复
我知道运算符重载可以是成员函数和友元函数,这里用的是友元.
gwang119 2006-08-07
  • 打赏
  • 举报
回复
有些不明白,请详细的说说吧
谢谢
liufan2005 2006-08-07
  • 打赏
  • 举报
回复
To genius_hb(本人很差):
谁说的重载的operator()必须为类的成员函数,友元可以阿
gwang119 2006-08-07
  • 打赏
  • 举报
回复
那什么地方不对呢?
genius_hb 2006-08-07
  • 打赏
  • 举报
回复
重载的operator()必须为类的成员函数,不能为非成员的。你的重载显然有问题了。。
ykzhujiang 2006-08-07
  • 打赏
  • 举报
回复
这个可以吗?

64,439

社区成员

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

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