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!

Antworten auf die Frage(5)

Ihre Antwort auf die Frage