V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
HxSeek
V2EX  ›  C

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

  •  
  •   HxSeek · 2015-04-25 10:24:20 +08:00 · 1257 次点击
    这是一个创建于 3260 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    //这是构造函数
    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));(主要是这句)
    }

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

    6 条回复    2015-04-26 01:19:48 +08:00
    ljcarsenal
        1
    ljcarsenal  
       2015-04-25 10:36:57 +08:00   ❤️ 1
    return (R * f, G * f, B * f, A * f); ??

    不应该是 return Color(R * f, G * f, B * f, A * f); ?
    HxSeek
        2
    HxSeek  
    OP
       2015-04-25 10:54:46 +08:00
    对哦···,原理是我粗心```
    opkgopkg
        3
    opkgopkg  
       2015-04-25 12:07:50 +08:00 via Android
    萌萌。
    lirau
        4
    lirau  
       2015-04-25 17:45:44 +08:00
    eastphoton
        5
    eastphoton  
       2015-04-25 18:55:11 +08:00
    呵呵
    VirgilMing
        6
    VirgilMing  
       2015-04-26 01:19:48 +08:00 via iPhone
    为啥那个错的重载可以编译通过?float 可以隐式转换为自定义类?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3006 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:58 · PVG 22:58 · LAX 07:58 · JFK 10:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.