Teste de igualdade para classes derivadas em C ++ [duplicado]

Duplicata Possível:
Qual é o caminho certo para sobrecarregar o operador == para uma hierarquia de classes?

Em C ++, como as classes derivadas podem substituir o teste de igualdade da classe base de uma maneira significativa?

Por exemplo, digamos que eu tenho uma classe base A. As classes B e C derivam de A. Agora, dado dois ponteiros para dois objetos A, posso testar se eles são iguais (incluindo dados de subclasse)?

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?

Existe uma maneira limpa de fazer isso? Qual minha melhor aposta?

Obrigado!

questionAnswers(5)

yourAnswerToTheQuestion