J'ai une structure pour laquelle je veux définir un ordre relatif en définissant <,>, < = et> = opérateurs. En fait, dans ma commande, il n'y aura pas d'égalité, donc si une structure n'est pas plus petite qu'une autre, elle est automatiquement plus grande.comment faire référence à la structure actuelle dans un opérateur surchargé?
J'ai défini le premier opérateur comme celui-ci:
struct MyStruct{
...
...
bool operator < (const MyStruct &b) const {return (somefancycomputation);}
};
maintenant je voudrais définir les autres opérateurs en fonction de cet opérateur, de sorte que < = retournera les mêmes que < et les deux autres seront tout simplement retourner l'oposite. donc par exemple pour l'opérateur> je voudrais écrire quelque chose comme
bool operator > (const MyStruct &b) const {return !(self<b);}
mais je ne sais pas comment Référé à ce « moi » car je ne peux que refere aux champs à l'intérieur du struct actuel.
tout est en C++
espère que ma question était compréhensible :)
merci pour l'aide!
Êtes-vous est-ce que vous voulez que '<=' retourne la même chose que '<'? Je recommanderais généralement contre. Avoir 'a <= b' identiquement égal à'! (B b' identiquement égal à 'b
Habituellement, on définit les opérateurs binaires comme des fonctions libres et non comme des membres. Cela permet d'obtenir le même comportement pour les deux arguments lorsque des conversions implicites entrent en jeu; avoir des conversions implicites sur le second mais pas sur le premier est perturbant. – AProgrammer