我有一个指向类中其他“对象”的指针向量。
有没有办法,在其中一个对象被删除后删除任何可能从向量中指向它的指针?
最好的方法是以某种方式传播删除,但是,只要知道某个对象在遍历遍历时就被删除也是可以的。
答案 0 :(得分:1)
这就是std::weak_ptr
存在的原因。它不会停止删除,但会检测到它。
答案 1 :(得分:1)
不要使用香草指针。请改为使用班级std::shared_ptr
和std::weak_ptr
。
这些类实现自动内存管理。当您不再需要某个对象时,您不会删除该对象,而是删除引用该对象的所有shared_ptr
。只有当对象不存在shared_ptr
时,实际对象才会被删除。
任何仍然存在的weak_ptr
将返回一个将评估为false
的对象。当发生这种情况时,您知道可以从矢量中删除weak_ptr
。