操作符定义问题

[复制链接]
1352|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

粉丝
快速回复 在线客服 返回列表 返回顶部