あなたが言うように、コードはかなり長く、私はそれをすべて見ていませんでした. しかし、2つのエラーが突き出ました
1) あなたoperator-
は後ろ向きです
Vector2D& operator - (const Vector2D& other)
{
Vector2D resultant;
resultant = Vector2D(other.x - this->x,other.y - this-> y);
return resultant;
}
する必要があります
Vector2D& operator - (const Vector2D& other)
{
Vector2D resultant;
resultant = Vector2D(this->x - other.x, this->y - other.y);
return resultant;
}
2) コードには多くのスタイルの問題があります。最大のものは、ローカル変数への参照によってすべての値を返すことです。関数が戻った後に変数が存在しなくなるため、それは単にトラブルを求めているだけです。これはあなたoperator+
の例を書くためのより良い方法です
Vector2D operator+ (const Vector2D& other) const
{
return Vector2D(other.x + this->x, other.y + this->y);
}
operator+
対称演算子のようなものは、クラスメンバーではなくグローバル関数である必要があるため、まだ完全ではありませんが、あなたが持っているものよりも優れています。