Eventuali duplicati:
What’s the right way to overload operator== for a class hierarchy?uguaglianza di prova per le classi derivate in C++
In C++, come possono le classi derivate ignorare il test di uguaglianza classe base in modo significativo?
Ad esempio, supponiamo di avere una classe di base A. Le classi B e C derivano da A. Ora dati due puntatori a due oggetti A, posso verificare se sono uguali (inclusi eventuali dati di sottoclasse)?
class A {
public: int data;
};
class B : public A {
public: float more_data; bool something_else;
};
class C : public A {
public: double more_data;
};
A* one = new B;
A* two = new B;
A* three = new C;
//How can I test if one, two, or three are equal
//including any derived class data?
C'è un modo pulito per farlo? Qual è la mia migliore scommessa?
Grazie!
Possibile duplicato: http://stackoverflow.com/questions/1691007/whats-the-right-way-to-overload-operator-for-a-class-hierarchy –
Vuoi confrontare 'T == T ', dove' T' potrebbe essere 'A',' B', o 'C' (fine), o vuoi confrontare' A' con 'B' e' A' con 'C' e' B' con 'C' (discutibile)? – sbi
Nell'esempio sopra, voglio confrontarne uno con due e tre. Sono tutti puntatori. – Imbue