當我遇到問題時,我試圖創建一個簡單的向量類。 這是我的代碼片段:將運算符重載爲類成員
class Vector2D{
protected:
int x, y;
public:
Vector2D operator - (const Vector2D&);
friend int SumDiff(const Vector2D& obj1, const Vector2D& obj2);
};
Vector2D Vector2D::operator - (const Vector2D& param)
{
Vector2D obj;
obj.x = x - param.x;
obj.y = y - param.y;
return obj;
}
int SumDiff(const Vector2D& obj1, const Vector2D& obj2)
{
int result;
Vector2D obj3;
obj3 = obj1 - obj2;
result = obj3.x + obj3.y;
return result;
}
線obj3 = obj1 - obj2;
被突出顯示爲錯誤。具體而言,該行中的運算符-
似乎不會將Vector2D
對象作爲操作數。
即使SumDiff
函數是Vector2D
類的一部分,也會發生同樣的問題。
如果運算符-
作爲非成員函數重載,此代碼似乎只能編譯。爲什麼?
在此先感謝。
或者使用標準約定並將其聲明爲自由函數。 – NathanOliver
對不起,錯過了那一點。 – Angew