Addition
関数は のメンバーであるため、次のVector
ように呼び出す必要があります。
c = Vector::Addition(a, b);
また
c = a.Addition(b);
Addition
最初のものは関数がstaticである必要があることに注意してください。つまり、具体的なインスタンス (this
関数本体内) で動作しないことを意味します。
static Vector Addition(Vector a, Vector b);
ただし、ポインターにアクセスできないthis
ため、コピーを取得する代わりにデフォルト構築する必要がtemp
あります(ちなみに、上書きx
してから使用されていませy
ん)。
2 つ目は、左側のオペランドをthis
実装内のポインタとして使用します (a
シグネチャにはありません)。
Vector Addition(Vector b)
{
Vector temp = *this;
temp.x += b.x;
temp.y += b.y;
return temp;
}
C++でも演算子をオーバーロードできることに注意してください。このために、2 番目のインスタンスを取る非静的メンバー関数を定義しoperator+
ます (最初のインスタンスはthis
関数内のポインターで、左側のオペランドになります)。
Vector operator+(const Vector &other) const;
実装 (1 つの可能性):
Vector Vector::operator+(const Vector &other)
{
Vector temp = *this;
temp.x += other.x;
temp.y += other.y;
return temp;
}