我正在读一本名为“游戏物理引擎开发”的书。在书中,作者创建了一个自定义类型(真实),允许他在浮动和双重之间轻松切换,而无需更改整个程序。然后他重载* =运算符以允许矢量点积。
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)
我做错了吗?
答案 0 :(得分:3)
您的定义行
#define RealPow powf;
最后不应该有一个额外的分号。