1
私はwhirlyB
とgameCreature
の両方から継承する3つのクラスを持っています。私はgameCreatures
のコレクションの3つのサブクラスをすべて使用しています。継承された機能を使用する方法はwhirlyB
ですか?私はgameCreature
の機能を使用する選択肢しか与えられていません。 whirlyB
の機能を使用するにはどうすればよいですか?多重継承と異種コレクション
私はwhirlyB
とgameCreature
の両方から継承する3つのクラスを持っています。私はgameCreatures
のコレクションの3つのサブクラスをすべて使用しています。継承された機能を使用する方法はwhirlyB
ですか?私はgameCreature
の機能を使用する選択肢しか与えられていません。 whirlyB
の機能を使用するにはどうすればよいですか?多重継承と異種コレクション
ここでは、基本ポインタの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
与え、あなたはを言うことができます。
私は本当にこの良いデザインとは言わないでしょうし、お勧めでもありませんが、あなたの質問に対する答えは文字通りです。
質問に関連する言語タグを追加してください。 –
呪文をキャストする! – stmax
@oli、申し訳ありませんC++ – Aaron