Ich habe eine Struktur, für die ich eine relative Reihenfolge definieren möchte, indem ich <,>, < = und> = Operatoren definiere. tatsächlich in meiner Reihenfolge wird es keine Gleichheit geben, wenn also eine Struktur nicht kleiner als eine andere ist, ist sie automatisch größer.Wie wird in einem überladenen Operator auf die aktuelle Struktur verwiesen?
ich den ersten Operator wie folgt definiert:
struct MyStruct{
...
...
bool operator < (const MyStruct &b) const {return (somefancycomputation);}
};
nun die anderen Betreiber ich möchte auf diesem Operator, so dass < = das gleiche wie < und die beiden anderen wird einfach zurückkehren basierend definieren das Gegenstück zurückgeben. so zum Beispiel für den Operator> Ich mag würde so etwas wie
bool operator > (const MyStruct &b) const {return !(self<b);}
schreiben, aber ich weiß nicht, wie man diesen ‚Selbst‘ refere, da ich nur auf die Felder in der aktuellen Struktur refere kann.
Ganze ist in C++
hoffe, meine Frage war verständlich :)
danke für die Hilfe!
Sind Sie sicher, dass Sie möchten, dass <<= 'das gleiche wie' <'zurückgibt? Ich würde normalerweise dagegen empfehlen. Wenn "a <= b" identisch mit "! (B b" identisch mit "b
Normalerweise definiert man binäre Operatoren als freie Funktionen und nicht als Mitglieder. Dies ermöglicht, das gleiche Verhalten für beide Argumente zu erhalten, wenn implizite Konvertierungen ins Spiel kommen; Implizite Konvertierungen auf der zweiten, aber nicht auf der ersten, sind störend. – AProgrammer