重载运算符undefined

时间:2016-10-25 12:44:17

标签: c++

我正在读一本名为“游戏物理引擎开发”的书。在书中,作者创建了一个自定义类型(真实),允许他在浮动和双重之间轻松切换,而无需更改整个程序。然后他重载* =运算符以允许矢量点积。

typedef float real;
#define RealSqrt sqrt
#define RealPow powf;

编辑:这是矢量类。

class Vector3D
    {
    public:
        real x;
        real y;
        real z;

    void operator *=(const real value)
          {
            x *= value;
            y *= value;
            z *= value;
          }
    }

我的问题是,当我使用我用* =运算符定义的宏(RealPow)时,Visual Studio突出显示一个错误,告诉我操作符* =未定义此类参数。 (速度是矢量)

velocity *= RealPow(damping, duration);

但我不明白的是,当我用powf直接写它时,没有问题。

velocity *= powf(damping, duration);

编辑:它给我的错误是:没有运算符“* =”匹配这些操作数:Vector3D * = float_cdecl(float _x,float _y)

我做错了吗?

1 个答案:

答案 0 :(得分:3)

您的定义行

#define RealPow powf;

最后不应该有一个额外的分号。