ゲームのいくつかの場所で、デザインでポインタ ツー ポインタを使用したいと思っています。たとえば、OpenGLRenderer
頂点/インデックス/texcoord データを指定してメッシュを作成するクラス、マテリアル プロパティを指定してマテリアルを作成するクラスがあります。次に、ResourceManifest
ファイルからメッシュ/マテリアルをキャッシュし、これらのリソースの 1 つをロードすると、OpenGLRenderer
. そこでカップリングがあります。
私は通常、次の関係に誘惑されるコーディング時に RAII 設計を採用するのが好きです。
ResourceManifest(OpenGLRenderer** renderer);
OpenGL コンテキストが取り壊され、ウィンドウを再作成するときなど、すべての OpenGL 状態固有のものを再初期化する必要がある場合、私は を再作成しOpenGLRenderer
、コンストラクター/デストラクタにすべての作業を行わせ、ResourceManifest
それを使用することは決して賢明ではありません。 .
私が疑問に思っているのは、これが単純な古いポインターツーポインターを使用するのに十分な正当化であるかどうかです。利用可能な最新のツールまたは手法はありますか? たとえば、さまざまな smart_ptrs を見てきましたが、新しい smart_ptrs を渡さずに管理対象オブジェクトを再作成したいので、目前の問題に対処していません。