私のプログラムでitems
の管理方法を理解しようとしています。私はitem
がどこにあるかを知っている統一されたinventory
システムを持っていたいと思っています。次に、container
のオブジェクトを実際にインベントリしたitems
を持っていて、すべてcontainer
idで見つけられます。複数の場所で参照されるオブジェクト
私の考えはboost::ptr_vetors
内部containers
内部に保持items
を持って、その後、inventory
オブジェクトの内部ハッシュテーブル内のポインタ(おそらく同じもの)を保持するために、今inventory
の面で周りのものをシフトすると、そのちょうど簡単ですました単一の値を変更すること、そして物をcontainer
Xからcontainer
に移動することは、ただ1つのポインタベクトルから削除し、それを他のコンテナに渡すこと、または1つのすべての作業を1つのcontainer
、または別のもので行うことです。
私が問題を抱えているという問題は、すべてのものを取り出す時が来たときです。私は本当に一度に1つの場所に複数のポインタ/オブジェクトを保持することに取り組んできましたが、すでに削除されているものを削除しようとすると、少なくともクラッシュすることになります。まず、containers
からすべての参照を削除し、それでもinventory
に存在させてから、ステップスルーしてinventory
を削除することです。これは実現可能か、それともこの権利を考慮していないのですか?これを再考する必要がありますか?もし私がただ一つのものを取り除く必要があるのであれば(残っておいてください)?
どちらの場合でもポインタの検証を解除することが心配です。
(C++ 11またはBoostで)スマートポインタのベクトルを使用してみませんか?ポインタを削除する必要がないかどうか気にする必要はありません。しかし、私はあなたの問題を理解していないと思う... – Uflex