我已经继承层次如何检查的对象是基类
class A{
virtual bool fun() = 0;
};
class B: public A{
...
}
class C: public B{
...
}
class D: public C{
...
}
class E: public B{
...
}
在主程序中,我执行类似
for(auto pA: ObjVector)
{
if(pA->fun()){
...
}
}
现在我想知道Pa为包含以下基类B对象。 据我所知2种方式
dynamic_cast
所有派生类对象,测试是否所有dynamic_casts
失败 ,只有通过对B
我们确信, 对象类型的B
添加一个接口方法,将返回值类型
enumeration
值并标识B
对象。
是否有任何其他方法来识别B
类?
如果需要知道什么对象你正在处理你编写代码,它更可能你有一个缺陷在你的设计中。 – PaulMcKenzie
我正在解决现有代码中的问题,这个设计是由客户给出的,我们不应该改变他的设计。 –