0

プログラムの 1 か所で new を使用してオブジェクトを作成します (それらをアクターと呼びましょう)。これらのオブジェクトは、ポインターを介して別のオブジェクト (発射物と呼びましょう) に渡されます。そのアクター オブジェクトは、発射物の外部でいつでも削除できます。これにより、削除と NULL への設定が行われます。ただし、そのポインターはまだ発射体にあります。!= NULL かどうかを確認しますが、それらのチェックに合格します。クラス内の値はすべて偽物ですが、ポインター自体は NULL ではありません。

ポインターへのポインターなどを行う必要がありますか? ポインターを渡し、ある時点で削除してそのポインターを NULL に設定すると、渡した他のすべての場所でも NULL が表示されると思いました。

4

2 に答える 2

5

などのスマート ポインターを調べる必要がありますstd::shared_ptr

于 2012-09-08T13:18:10.810 に答える
1

二重間接化について考えたことはありますか?

  1. のマップを使用Actors:std::map<unsigned, Actor>
  2. ActorIDのみを発射体に保存する

ここで、ID が単調に増加すると仮定すると (約 40 億個の ID が利用可能で、しばらくは使用できるはずです)、ID がマップに存在しないということは、ID がActor消えた (削除された) ことを意味します。

于 2012-09-08T13:41:59.140 に答える