Возможный дубликат:
Какой правильный способ перегрузить operator == для иерархии классов?
В С++, как производные классы могут переопределить тест равенства базового класса значимым образом?
Например, скажем, что у меня есть базовый класс A. Классы B и C происходят от A. Теперь, учитывая два указателя на два объекта A, могу ли я проверить, являются ли они равными (включая любые данные подкласса)?
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?
Есть ли чистый способ сделать это? Какой у меня лучший выбор?
Спасибо!