2012-02-29 82 views
1

我有三個類從whirlyBgameCreature繼承。我使用gameCreatures集合中的全部三個子類。有沒有辦法使用whirlyB的繼承功能。我只能選擇使用gameCreature函數。我應該怎麼做才能獲得whirlyB的功能?多繼承和異構集合

+0

請將相關的語言標籤添加到您的問題。 – 2012-02-29 21:16:13

+0

把他們鑄成wh!! – stmax 2012-02-29 21:29:22

+0

@oli,對不起C++ – Aaron 2012-02-29 21:31:35

回答

2

這是一個愚蠢的想法,對於你堅持使用基本指針之一但可以自由修改類的情況。假設我們有:

struct InBetween : Rock, HardPlace { /* ... */ } 

,並假設你只有使用Rock -pointers。編輯Rock如下:

struct Rock 
{ 
    virtual HardPlace * get_other() const = 0; 
    // ... 
}; 

現在給每個派生類如下:

struct InBetween : Rock, HardPlace 
{ 
    virtual HardPlace * get_other() const { return this; } 
    // ... 
}; 

現在,給Rock * r,你可以說​​。

我不會稱這個好設計,或者甚至是值得推薦的,但我認爲這是對你的問題的字面解答。