Ich implementiere eine Vektorklasse und muss ein Gegenteil von einem Vektor erhalten. Ist es möglich, diese Methode durch Operatorüberladung zu definieren?
Folgendes meine ich:
Vector2f vector1 = -vector2;
Ich möchte, dass dieser Operator Folgendes erreicht:
Vector2f& oppositeVector(const Vector2f &_vector)
{
x = -_vector.getX();
y = -_vector.getY();
return *this;
}
Vielen Dank.
c++
operator-overloading
Ilya Suzdalnitski
quelle
quelle
.getX()
und.getY()
auf Ihrem einfachenAntworten:
Ja, aber Sie geben keinen Parameter an:
class Vector { ... Vector operator-() { // your code here } };
Beachten Sie, dass Sie * dies nicht zurückgeben sollten. Der unäre Operator muss einen brandneuen Vektorwert erstellen und darf nicht das Element ändern, auf das er angewendet wird. Daher möchte Ihr Code möglicherweise ungefähr so aussehen:
class Vector { ... Vector operator-() const { Vector v; v.x = -x; v.y = -y; return v; } };
quelle
-
kann auch durch eine eigenständige Funktion überlastet werden, die die Implementierung von OP genau widerspiegeln würdeoppositeVector
.Es ist
Vector2f operator-(const Vector2f& in) { return Vector2f(-in.x,-in.y); }
Kann innerhalb der Klasse oder außerhalb sein. Mein Beispiel befindet sich im Namespace-Bereich.
quelle
Vector2f
as-Parameter verwendet, da er eher im Namespace als im Klassenbereich definiert ist. Meine Antwort ist richtig.