我想重載*
運算符以便乘以兩個對象(點積)。C++中的重載運算符
這些對象可以是Point3D
,Vector3D
或Normal
。它們基本上都具有相同的結構(x,y和z值),我只將它們分解爲語義。
是給我找麻煩線路是這樣的:
float t = (point - r.origin)*normal/(r.direction * normal);
這裏,點和r.origin是Point3D
,正常是Normal
和r.direction是Vector3D
。在這些類的頭文件,我有以下過載功能:
在Vector3D.h:
Vector3D operator *(Normal& n);
在Point3D.h:
Point3D operator -(Point3D& p);
Point3D operator *(Normal& n);
我得到的錯誤是:
No match for 'operator*' in 'r->Ray::direction * ((const Plane*)this)->Plane::normal'
假設我已經正確地填寫了.cpp文件中的函數,有沒有什麼愚蠢的我已經完成這裏?另外,請忽略這樣一個事實,那就是沒有分工操作員......這正在進行中!
乾杯
歡呼的幫助,但將其全部更改爲常量給我'丟棄限定符'的錯誤。對不起,我昨天才開始C++:/ – 2012-03-29 00:23:27
也許你可以給我們提供一個[* complete * example](http://sscce.org),它可以證明你遇到的問題。我們只能猜測代碼的其餘部分是什麼樣的,對任何人來說都沒有什麼效果。 – 2012-03-29 00:24:29
'丟棄限定符'意味着你在函數中調用了一些不需要'const'的東西,但可能應該這樣做。向我們展示更多代碼。 – 2012-03-29 00:25:42