讓我們假設我有兩個具有相同的接口確定性在C++中,對象類型
class FirstChild : class Father
{
//some fields and methods useful for class A
}
class SecondChild : class Father
{
//some fields and methods useful for class B
}
後來,在代碼類似的東西做
Father* myInstance = new SecondChild();
現在,如果兩個類映射兩個對象我想知道對象的type
,如果實例是FirstChild或SecondChild,則必須執行一些操作。我正在做類似的事情:
if (typeid (myInstance) == typeid (FirstChild))
{
// do stuff
} else if (typeid (myInstance) == typeid (SecondChild))
{
// do other stuff
}
這是正確的方式嗎? 因爲某處StackOverflow
,我讀了typeid
是不是安全,它是更方便地添加一個虛擬功能,比方說getType
例如,做,在則firstChild
char* getType { return "FirstChild"; }
說實話,我不喜歡這樣的解決方案太多了,因爲我們似乎忽略了面向對象編程中多態的強大功能。
所以,你們,你覺得呢?在C++中檢查子對象類型的最佳方法是什麼?
'dynamic_cast'也許?無論如何,這樣做的需要表明你有嚴重的設計缺陷。 – user0042
如果你需要知道這種類型,你可能做錯了。 – juanchopanza
這聽起來像是你應該用多態和虛函數解決的問題。也許'dynamic_cast'。 – NathanOliver