2015-04-26 83 views
0

這是在運行時檢查mybase類是否是派生類。我需要在運行時使用myBase如myBase.member1從myDerived.member1中調用成員變量。這裏myBase是一個指針。怎麼做。在運行時使用派生類C++

if(dynamic_cast<myDerived*>(myBase)) 
+0

''dynamic_cast <>''不返回''bool''。它要麼拋出一個異常,要麼返回一個「myDerived *」指針。 – BitTickler

+1

'dynamic_cast (myBase) - > member1'? – Carlton

+0

@Carlton是的,它的工作原理,謝謝! – ruben

回答

1

我會做這樣的:

myDerived* p_derived = nullptr; 
p_derived = dynamic_cast<myDerived*>(myBase); 
if (p_derived != nullptr) 
    //do something with p_derived->member1; 

這樣,你只是做一個(可能是昂貴的)一次打電話給dynamic_cast

+0

這是更清潔 – ruben