打印

操作符定义问题

[复制链接]
902|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
秋天落叶|  楼主 | 2012-6-14 17:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
typedef struct rgb_str
{
unsigned char r_color;
unsigned char g_color;
unsigned char b_color;
rgb_str& operator +(const rgb_str &a)
{
this->r_color=r_color+a.r_color;
this->g_color=g_color+a.g_color;
this->b_color=b_color+a.b_color;
return *this;
}
}

int main()
{
rgb_str mean[3];
mean[2]=mean[0]+mean[1];
}

//在这里,mean[0]和mean[1]相加的时候mean[0]中的值会改变,这不是我所希望的。但是呢 如果在操作符定义中为(const rgb_str &a,const rgb_str &b)加入两个参数时,又会提示must be declared with one parameter.
所以有没有什么办法既可以实现加法运算,又不会让mean[0]中的值改变??

相关帖子

沙发
yybj| | 2012-6-14 17:21 | 只看该作者
申明为友元函数,返回不要用引用,
friend rgb_str operator + (const rgb_str& left,const rgb_str& right);

使用特权

评论回复
板凳
baidudz| | 2012-6-14 18:04 | 只看该作者
你这段代码很怪 你可以使用类 定义一个重载操作符的友元函数

使用特权

评论回复
地板
txcy| | 2012-6-14 21:44 | 只看该作者
你定的操作符“+”, 其实是A = A + B……
然后你还mean[2] = mean[0] + mean[1],你这个时候mean[2]和mean[0]完全是同一个

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:落叶很美

138

主题

3044

帖子

1

粉丝