假设我在一些不同类类型的其他对象中有一个对象和10个指针。如果删除对象,则必须将这些指针设置为null。通常我会将对象的类与具有指针的类互连,以便它可以通知它们它被删除,并且可以将它们的指针设置为null。但是这也有负担,当类被删除时类也必须通知对象,因为对象也需要指向它们的指针。这样,当对象破坏并试图通知其他人时,该对象不会将取消引用称为悬空指针。
我不喜欢这种令人困惑的垃圾网,我正在寻找一种更好的方法。
请注意,自动指针和共享指针不是我正在寻找的 - 自动指针在它们销毁时删除它们的对象,并且当没有更多的共享指针指向它时,共享指针也会这样做。我正在寻找的是一个灵活的方法,用于在对象析构时将对象的所有指针设置为null。
答案 0 :(得分:8)
“计算机科学中的所有问题都可以通过另一层次的间接解决” - David Wheeler
在你的情况下,什么能够很好地运作
std::shared_ptr<Object*> pp.
删除对象时,请将共享的Object*
设置为空(例如*pp = 0;
)。所有其他用户共享Object*
,现在将看到它已变为空。当所有用户都离开后,用于Object*
本身的内存也将被释放。
答案 1 :(得分:0)
自动指针和共享指针等基本上只是为您处理此类内容的类。但听起来你的需求略有不同,所以我认为你应该开发自己的类来管理指针并使用它来代替原始指针。这样你就可以获得你正在寻找的光滑功能。