删除存储了多个引用的指针

时间:2012-09-08 13:15:18

标签: c++ pointers

我在程序中的一个地方通过new创建对象(让我们称之为actor)。这些对象通过指针传递给另一个对象(让它称之为抛射物)。在任何一点上都可以在弹丸之外删除演员对象。删除并设置为NULL会发生这种情况。然而,它的指针仍然在抛射物中。我检查是否!= NULL但它通过了那些检查。类中的值都是伪造的,但指针本身不是NULL。

我是否需要指针指针或其他东西?我只是想如果我传递一个指针并且在某些时候被删除并将该指针设置为NULL,那么我传递给它的所有其他地方也将显示为NULL。

2 个答案:

答案 0 :(得分:5)

您应该查看智能指针,例如std::shared_ptr

答案 1 :(得分:1)

您是否考虑过双重间接?

  1. 使用Actorsstd::map<unsigned, Actor>
  2. 的地图
  3. 仅将Actor ID存储在射弹
  4. 现在,假设一个单调增加的ID(你有大约40亿可用的ID,应该让你停留一段时间),地图中缺少一个ID意味着Actor消失(被删除)。 / p>