0
這是在運行時檢查mybase類是否是派生類。我需要在運行時使用myBase如myBase.member1從myDerived.member1中調用成員變量。這裏myBase是一個指針。怎麼做。在運行時使用派生類C++
if(dynamic_cast<myDerived*>(myBase))
這是在運行時檢查mybase類是否是派生類。我需要在運行時使用myBase如myBase.member1從myDerived.member1中調用成員變量。這裏myBase是一個指針。怎麼做。在運行時使用派生類C++
if(dynamic_cast<myDerived*>(myBase))
我會做這樣的:
myDerived* p_derived = nullptr;
p_derived = dynamic_cast<myDerived*>(myBase);
if (p_derived != nullptr)
//do something with p_derived->member1;
這樣,你只是做一個(可能是昂貴的)一次打電話給dynamic_cast
。
這是更清潔 – ruben
''dynamic_cast <>''不返回''bool''。它要麼拋出一個異常,要麼返回一個「myDerived *」指針。 – BitTickler
'dynamic_cast(myBase) - > member1'? –
Carlton
@Carlton是的,它的工作原理,謝謝! – ruben