私はエンティティからほとんどすべてが継承されるゲームを作っています。また、レンダリングが必要なすべてのエンティティ用のIRenderableインターフェイスがあります。このキャストの問題に関するヘルプ
レベルをロードすると、IRenderableであるすべてのエンティティがIRenderable *のベクトルに配置され、レンダラに渡されます。
私が何らかのエンティティをインスタンス化するとき、それをEntity *のベクトルに追加します。
このエンティティがENTITY_DESTROYEDメッセージを送信するとき、私は正確に何をすべきでしょうか?
問題は、このエンティティがIRenderableであるかどうかわかりません。私はそれを試してキャストしなければならないだろうし、もしキャスティングが良いアイデアならここでは分からない。
キャスティングを避けるために他に何ができますか?
おかげ
もう一つのポイントは、私は、ポインタが原因多重継承に異なる場合があります、それはIRenderable知っている場合でも、注意します。
警告の言葉として、この種のデザインは1000年代のエンティティにはあまりにもスケールがありません。より良いアイデアは、データを制御すること(エンティティコードでレンダラブルを明示的に作成/破棄すること)、または「呼び出しごとに描画する」メソッドを使用することによって、レンダラにレンダリング可能なレンダリングを教えさせ、継承階層またはコンポーネントモデルの一部として、 。私は自分のゲームエンジンで同じミスをしてしまい、元に戻すことが大好きです... PC以外のものを使いたい場合は、仮想/継承のコストはもちろんです。 – jheriko