关于运算符重载

xjy_shu 2014-10-19 05:11:05
我定义了一个有理数类Rtional,成员是整数部分zs,分子fz,分母fm,然后我在类内定义一个友元函数
friend double& operator=(double& d, const Rational& a) ,是个运算符重载函数,把一个类对象化成小数赋值给double 变量
double & operator =(double &a,const Rational &b) //=号重载,左边是double,右边是类
{
a = b.zs + b.fz*1.0 / b.fm;
return a;
}
为什么编译的时候报错error: `double& operator=(double&, const Rational&)' must be a nonstatic member function
为什么啊?求赐教
...全文
93 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
unituniverse2 2014-10-19
  • 打赏
  • 举报
回复
引用 4 楼 xjy_shu 的回复:
[quote=引用 3 楼 lovesmiles 的回复:] .operator=、operator[]、operator()、operator->只能定义为成员函数 不能定义成friend,别问我为什么,这是规定。
现在的问题是老师要求的功能有这个,那我该怎么定义[/quote] 叫他自己写。。。
xjy_shu 2014-10-19
  • 打赏
  • 举报
回复
引用 3 楼 lovesmiles 的回复:
.operator=、operator[]、operator()、operator->只能定义为成员函数 不能定义成friend,别问我为什么,这是规定。
现在的问题是老师要求的功能有这个,那我该怎么定义
勤奋的小游侠 2014-10-19
  • 打赏
  • 举报
回复
.operator=、operator[]、operator()、operator->只能定义为成员函数 不能定义成friend,别问我为什么,这是规定。
xjy_shu 2014-10-19
  • 打赏
  • 举报
回复
先给自己顶顶
xjy_shu 2014-10-19
  • 打赏
  • 举报
回复
变量名抄过来时写错了,在源文件里面是对的,请不要在意

64,637

社区成员

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

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