C++ 传参时候,参数发生改变?! 怎么回事?

2015-04-25 10:24:20 +08:00
 HxSeek

传参数的是,形参和实参不一致了!(调试时候发现的), 本人搞不太懂是什么回事,请各路大神指点一下。。。

//这是构造函数
Color::Color(float r, float g, float b, float a)
{
R = r;
G = g;
B = b;
A = a;
}

//下面三个是操作符重载
Color Color::operator + (Color &c)
{
return Color(R + c.R, G + c.G, B + c.B, A + c.A);
}

Color Color::operator - (Color &c)
{
return Color(R - c.R, G - c.G, B - c.B, A - c.A);
}

//(就是这个操作符重载出了问题··上面2个好像都没事)
Color Color::operator * (float f)
{
return (R * f, G * f, B * f, A * f);
}

操作语句:
float x;

float y;
float slope;

float xdiff = x2 - x1;
float ydiff = y2 - y1;

slope = ydiff / xdiff;
for(x=x1; x<=xdiff; x+=1.0f)
{

y = ((x - x1) * slope) + y1;
Color color = color1 + ((color2 - color1) * ((x - x1) / xdiff));(主要是这句)
}

我感觉我操作符重载没写错··但是构造的时候就错了···如果不是操作符重载的问题,又会是什么问题呢?

1285 次点击
所在节点    C
6 条回复
ljcarsenal
2015-04-25 10:36:57 +08:00
return (R * f, G * f, B * f, A * f); ??

不应该是 return Color(R * f, G * f, B * f, A * f); ?
HxSeek
2015-04-25 10:54:46 +08:00
对哦···,原理是我粗心```
opkgopkg
2015-04-25 12:07:50 +08:00
萌萌。
lirau
2015-04-25 17:45:44 +08:00
eastphoton
2015-04-25 18:55:11 +08:00
呵呵
VirgilMing
2015-04-26 01:19:48 +08:00
为啥那个错的重载可以编译通过?float 可以隐式转换为自定义类?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/186191

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX