我有以下类层次结构:
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;
}