Devo essere in grado di confrontare una delle mie classi (che contiene molto più di un intero) in numeri interi, anche se potrebbe essere un po 'più simile di uguaglianza è abbastanza vicino ...Sovraccarico operatori di confronto per diversi tipi in C++
Come sovraccarico l'operatore di uguaglianza per diversi tipi?
Io fondamentalmente sono una classe come questa
struct MyClass {
int start;
int middle;
int threequarters;
};
e l'operatore di overload
inline bool operator==(const MyClass& lhs, const MyClass& rhs) {
return lhs.middle == rhs.middle;
}
Così, quando si confrontano con interi ho bisogno di confrontare con la variabile di mezzo pure, ma io sono Non sono sicuro se ho bisogno di due serie di funzioni dell'operatore, una in cui l'intero è lhs e uno in cui l'intero è rh?
Sì, dovresti farlo way - support (int, MyClass) e (MyClass, int). Sebbene tu possa definire uno degli operatori nei termini dell'altro.Un'altra possibilità è di avere un costruttore per MyClass che costruisca da un int - quindi ti servirà solo un operatore (MyClass, MyClass) perché quando il compilatore incontra l'int può promuoverlo come tipo MyClass per l'operatore. – qeadz
Quindi per confrontare MyClass con MyClass e interi con MyClass, avrò bisogno di 3 set di ogni funzione di confronto (18 in totale), anche se la maggior parte di essi farà riferimento ad altri ..? – user3235200
Oppure date alla vostra classe un costruttore di converting 'MyClass (int i): middle (i) {}'. – juanchopanza