Gleichheitstest für abgeleitete Klassen in C ++ [duplizieren]
Mögliche Duplikate:
Was ist der richtige Weg, um den Operator == für eine Klassenhierarchie zu überladen?
Wie können abgeleitete Klassen in C ++ den Basisklassen-Gleichheitstest auf sinnvolle Weise überschreiben?
Angenommen, ich habe eine Basisklasse A. Die Klassen B und C leiten sich von A ab. Wenn jetzt zwei Zeiger auf zwei A-Objekte gegeben werden, kann ich dann testen, ob sie gleich sind (einschließlich etwaiger Unterklassendaten)?
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?
Gibt es eine saubere Art, das zu tun? Was ist meine beste Wette?
Vielen Dank!