我已經繼承層次如何檢查的對象是基類
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
我正在解決現有代碼中的問題,這個設計是由客戶給出的,我們不應該改變他的設計。 –