Comment surcharger un opérateur moins unaire en C ++?

Je suis en train de mettre en place une classe de vecteurs et je dois avoir un opposé de certains vecteurs. Est-il possible de définir cette méthode en utilisant la surcharge de l’opérateur?

Voici ce que je veux dire:

Vector2f vector1 = -vector2; 

Voici ce que je veux que cet opérateur accomplisse:

 Vector2f& oppositeVector(const Vector2f &_vector) { x = -_vector.getX(); y = -_vector.getY(); return *this; } 

Merci.

Oui, mais vous ne lui fournissez pas de paramètre:

 class Vector { ... Vector operator-() { // your code here } }; 

Notez que vous ne devriez pas retourner * ceci. L’opérateur unaire doit créer une nouvelle valeur vectorielle, sans changer la chose à laquelle il est appliqué, afin que votre code puisse ressembler à ceci:

 class Vector { ... Vector operator-() const { Vector v; vx = -x; vy = -y; return v; } }; 

Ses

 Vector2f operator-(const Vector2f& in) { return Vector2f(-in.x,-in.y); } 

Peut être dans la classe ou à l’extérieur. Mon échantillon est dans la scope de l’espace de noms.

Je cherchais juste la réponse à cette question, tout en concevant une bibliothèque arithmétique de haute précision en C ++ (basée sur GMP). Contrairement à ce qui a été dit, cet unaire “-” doit renvoyer une nouvelle valeur, ce code fonctionne pour moi:

 bigdecimal& bigdecimal::operator - () { mpf_neg(this->x, this->x);//set left mpf_t var to -right return *this; }