我改變了我的編譯器已經有一段時間了,但是當我這樣做時,我的代碼在早期運行良好,無法再編譯 - 我將其歸因於最近C++語言標準中的細微變化(並沒有嚴格遵守)。'operator-'不匹配
好的。過去可以正常工作的代碼是:
VECTOR operator-(const VECTOR& v){
VECTOR tmp;
tmp.x = x - v.x;
tmp.y = y - v.y;
tmp.z = z - v.z;
return tmp;
}
這裏,X,Y,Z表示Vector類的所有公共成員
類用作:
VECTOR diff, A, B;
diff = A - B;
當編譯它與g ++ 6.2.0,我得到的錯誤:
error: no match for ‘operator-’ (operand types are ‘const VECTOR’ and ‘const VECTOR’)
我跟隨各種實例發現在線(包括這裏),並實施噸他操作員通過朋友功能過載:
friend VECTOR operator-(VECTOR lhs, const VECTOR& rhs){
lhs.x -= rhs.x;
lhs.y -= rhs.y;
lhs.z -= rhs.z;
return lhs;
}
這段代碼編譯得很好。我看到使用朋友函數的基本原理,但我想知道爲什麼舊的(成員函數)實現不起作用,我怎樣才能編譯它。
在此先感謝!
謝謝,@NPE,工作! – user938720