Possible en double:
Operator Overloading in C++ as int + obj
Operator overloadingc++-faqopérateur pour Surcharge
J'ai un objet Point
avec cet opérateur:
Point operator +(float other) const {
return Point(x + other, y + other, z + other);
}
Je peux effectuer une addition comme ceci:
point + 10
Mais je ne peux pas l'exécuter dans l'ordre inverse:
10 + point
Y at-il un autre opérateur que je dois surcharger afin de fournir cette fonctionnalité?
En effet. Mais beaucoup (par exemple Meyers) soutiendraient que les constructeurs de conversion implicites peuvent conduire à des problèmes ... –
@OliCharlesworth: ils peuvent certainement * conduire * à certains problèmes, mais quand vous regardez attentivement, ils surviennent le plus souvent lorsque vous convertissez de la classe à la base type. Du type de base à la classe * tend * à être beaucoup plus sûr (bien que cela puisse * certainement * poser des problèmes). –
Notamment dans ce cas: 'point + 10 'combine déjà les notions mathématiques de vecteur et de valeurs scalaires, en permettant à l'utilisateur d'écrire' 10' à la place de 'point_offset (10,10,10)' (notez qu'un point et une valeur vectorielle sont également légèrement différentes - les vecteurs peuvent être utilisés pour désigner des points relatifs à une origine, mais tous les vecteurs * ne sont pas * et il est mathématiquement dénué de sens d'ajouter deux points ensemble). Si vous combinez ces concepts, il me semble logique d'autoriser cette conversion implicite. Si vous ne les combinez pas, n'autorisez pas non plus 'Point + float'. –