如何删除传播或检测到的对象?

时间:2014-06-12 07:32:37

标签: c++ pointers

我有一个指向类中其他“对象”的指针向量。

有没有办法,在其中一个对象被删除后删除任何可能从向量中指向它的指针?

最好的方法是以某种方式传播删除,但是,只要知道某个对象在遍历遍历时就被删除也是可以的。

2 个答案:

答案 0 :(得分:1)

这就是std::weak_ptr存在的原因。它不会停止删除,但会检测到它。

答案 1 :(得分:1)

不要使用香草指针。请改为使用班级std::shared_ptrstd::weak_ptr

这些类实现自动内存管理。当您不再需要某个对象时,您不会删除该对象,而是删除引用该对象的所有shared_ptr。只有当对象不存在shared_ptr时,实际对象才会被删除。

任何仍然存在的weak_ptr将返回一个将评估为false的对象。当发生这种情况时,您知道可以从矢量中删除weak_ptr