2012-02-29 14 views
1

私はwhirlyBgameCreatureの両方から継承する3つのクラスを持っています。私はgameCreaturesのコレクションの3つのサブクラスをすべて使用しています。継承された機能を使用する方法はwhirlyBですか?私はgameCreatureの機能を使用する選択肢しか与えられていません。 whirlyBの機能を使用するにはどうすればよいですか?多重継承と異種コレクション

+0

質問に関連する言語タグを追加してください。 –

+0

呪文をキャストする! – stmax

+0

@oli、申し訳ありませんC++ – Aaron

答えて

2

ここでは、基本ポインタの1つに固執していても、クラスを自由に変更できるという馬鹿げた考えがあります。

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

をし、あなたが唯一の利用可能Rock -pointersを持っていると仮定:私たちは持っていると仮定します。

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

は今、各派生クラスに以下を追加します:次のようにRockを編集

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

Rock * r与え、あなたは​​を言うことができます。

私は本当にこの良いデザインとは言わないでしょうし、お勧めでもありませんが、あなたの質問に対する答えは文字通りです。