【发布时间】:2016-12-19 14:45:36
【问题描述】:
我有以下继承层次
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 对象。 据我所知有两种方法
dynamic_cast对象并测试所有派生类(如果失败) 对于所有dynamic_casts并且仅通过B我们确信 对象的类型为B增加一个接口方法,返回类型
enumeration值并识别B对象。
还有其他方法可以识别B 类吗?
【问题讨论】:
-
如果您编写的代码需要知道您正在处理的对象是什么,那么您的设计很可能存在缺陷。
-
我正在修复现有代码中的一个问题,此设计由客户提供,我们不应更改他的设计。
标签: c++ inheritance