У меня есть следующая иерархия классов:
class Base{
....
virtual bool equal(Base *);
}
class Derived1: public Base{
....
virtual bool equal(Base *);
}
class Derived2: public Derived1{
}
class Derived3: public Derived1{
}
class Derived4: public Base{
}
Как мне написать функцию Base :: equal (Base *), которая сравнивает Derived4 и аналогичные классы? У них нет полей данных, поэтому проверяйте только, что фактические объекты принадлежат к одному и тому же производному классу.
А как записать Derived1 :: equal (Base) - Derived2 и Derived3 похожи, они не имеют никакого поля данных и должны сравниваться по полям данных в Derived1 и проверить, что
объекты из одного и того же производного класса?
Обновление:
Я хочу этого, потому что я не хочу писать идентичные функции для каждого производного класса, такие как:
bool Derived::equal(Base *b){
Derived *d = dynamic_cast<Derived*>(b);
return d;
}