2
我正在爲我的遊戲物理引擎編寫一個vec3類。*操作符重載操作數順序
我已經做了一個操作符重載,讓我由一個標量乘以一個向量(縮放矢量):
const vec3 operator*(const real n) const
{
return vec3(
m_x * n,
m_y * n,
m_z * n
);
}
這正常工作,如果我在我的計算中使用正確的順序:
float rImpulse;
vec3 vContactNormal;
...
vec3 vImpulse = vContactNormal * rImpulse;
如果我改變乘法(例如,如果我把標率先在計算)的順序
,那麼編譯器不喜歡這一點,並強調了它作爲一個錯誤。
我可以更新我的vec3類,以便乘法順序無關緊要嗎?怎麼樣? (我可能會拍我的額頭時,我一看便知!)
更新
我從VEC3類中刪除我原來的運算符重載,放在VEC3類的外部以下兩個運算符重載:
const vec3 operator*(const vec3 & v, const real r)
{
return vec3(
v.x() * r,
v.y() * r,
v.z() * r
);
}
const vec3 operator*(const real n, const vec3 & v)
{
return v * n;
}
如果運算符在類之外,final const關鍵字有什麼作用? – fishfood 2012-07-28 21:22:15
@lapin ooops,複製粘貼錯誤。編輯。 – 2012-07-28 21:22:46
:)沒問題!感謝您的答覆。我會在所需的13分鐘左右後接受你的答案。 – fishfood 2012-07-28 21:23:20