私の C++ プロジェクトには、Engine
クラス、Renderer
クラス、Object
クラスがあります。
のインスタンスは のインスタンスをRenderer
レンダリングしますObject
。ただしObject
、レンダリングする対象のリストから自分自身を追加したり、自分自身を削除したりするインスタンス。
使いやすさの観点から、 のインスタンスがObject
から描画されるかどうかを設定できる必要がありますObject
が、循環依存関係はありません。
この問題の解決策はありますが、それが良いアイデアかどうかはわかりません:
ゲーム内の更新サイクルは、すべてのオブジェクトの関数を呼び出すクラスUpdate()
内の関数によって行われます。の各インスタンスに対して関数を呼び出す場合、クラス内の 2 つのブール変数をチェックするように設定できます。1 つは描画すべきかどうか、もう 1 つは実際に描画されているかどうかです。したがって、これにより、必要に応じてレンダリング対象のリストに のインスタンスを追加または削除できるようになります。Engine
Update()
Update()
Object
Object
Object
このようにするのは良い考えですか?この方法は効率的ですか、それとも循環依存関係のないより良い方法はありますか?
編集: より明確にするために質問を書き直し、2番目の部分をおそらくより関連性の高い新しい質問に移動し、ここでさらに混乱を避けるようにしました。