0

シングルトンとして実行しているテクスチャマネージャーがあり、同じ方法でオブジェクトマネージャーを作成したいと考えています。

とにかく..texturemanagerで100%動作しているEAXACTコードをコピーしましたが、オブジェクトマネージャーでは、「非静的メンバー参照は特定のオブジェクトに関連している」というエラーが表示されます。

std::map私はそれが?と関係があると思います

これが私の100%動作するtextureManagerヘッダーとcppファイルです。 http://ideone.com/6bZQG | http://ideone.com/jjo2M

これが機能していないObjectManagerの開始です... http://ideone.com/rhSim | http://ideone.com/uLj4X

さて、基本的に、へのポインタstd::mapはエラーが発生している場所です。(ObjectManager.cppの23行目)delete呼び出しdestroy()は、そのエラーと他の場所(新しい関数を作成した場合)を表示します。それでも、タイマー変数は期待どおりに機能しています。 。

私がポインタをすることになっているいくつかの素晴らしい方法はありますstd::mapか?私が知る限り、このコードはテクスチャマネージャーのコードと100%同じですか?

アドバイスありがとうございます!

4

1 に答える 1

2

IRCで私が言ったことを大まかに繰り返すには:

  • ポインタは必要ありstd::mapません。コピーは保存されず、維持するためにより多くのメモリと労力がかかる可能性があります。
  • さまざまなシングルトンが破棄される順序を気にしない場合は、それらにaを使用します。ヘッダー実装unique_ptrを参照してください。
  • Boostには完全に細かいコピー不可があり、それを使用します(たとえば、実装ではまだ割り当てが許可されています)。

バージョンが機能しなかった理由について:実装ファイルの23行目で、gameObjects意図したインスタンスを指定せずに参照していました。あなたはおそらく意味しinstance->gameObjectsました。

于 2012-06-25T01:16:16.210 に答える