這個問題看起來可能有些常見,但是在放大StackOverflow或interwebs時我沒有找到任何東西。在處理父類對象列表時調用Child類的方法
我遇到了一個C++類中的方法,該類使用(例如)Parent
對象的列表。對於此示例,假設有兩個類別從Parent
:Child1
和Child2
派生。
對於列表中的每個對象,所述方法檢查如果對象是Child2
類型(通過IsOfType()
方法,每個類實現)的,並且如果是這樣,它調用僅由Child2
類提供了一種方法。
這是一個問題,因爲列表處理方法不能將每個對象都視爲相同嗎?我在其他地方也看到了這一點,所以在某種程度上它似乎是一種常見的做法。
一個選項可能是在Parent
類中聲明Child2
方法,以便所有Parent
對象實現它。但是,在這種情況下,只有Child2
類實際上會在覆蓋該方法時實現任何行爲。
您的想法?提前致謝!
列表處理方法當前的行爲與您所描述的相似,只是它不使用Typeid。也許該方法暫時保持原樣,但可能使用Typeid而不是IsOfType()方法。感謝這個建議! – bporter 2009-12-04 16:57:32