我寫夾持三個彩車,X Y Z,一些功能和運算符重載Point類LNK2019錯誤。我以下面的形式對運營商編碼:運算符重載和VS2010
inline Point Point::operator+ (Point point)
{
return Point(x + point.x, y + point.y, z + point.z);
}
inline void Point::operator+= (Point point)
{
x += point.x;
y += point.y;
z += point.z;
}
這是正確的方式來重載這些運算符嗎?我已經測試過它,但是我已經看到了另一種形式,例如:
inline Point& Point::operator+ (Point& point)
{
return Point(x + point.x, y + point.y, z + point.z);
}
inline Point& Point::operator+= (Point& point)
{
x += point.x;
y += point.y;
z += point.z;
return *this;
}
這兩種形式有什麼區別?
而且我可以用我的運營文件Point.cpp內,但如果我嘗試使用它在Main.cpp的說,我得到解析外部符號LNK2019一個錯誤。奇怪的是,我的功能在定義文件之外工作。我錯過了什麼讓這些操作員在他們定義的文件之外工作?
爲了避免鏈接錯誤,我想你可以儘量不要宣佈他們的內聯。雖然我實際上並不期望這會成爲問題的根源。 –