3

假设我在其他几个不同类类型的对象中有一个对象和 10 个指向它的指针。如果对象被删除,则必须将这些指针设置为空。通常我会将对象的类与具有指向它的指针的类互连,以便它可以通知它们它正在被删除,并且它们可以将它们的指针设置为空。但这也有负担,当它们被删除时,类也必须通知对象,因为对象也需要指向它们的指针。这样,当对象破坏并尝试通知其他对象时,它就不会调用取消引用悬空指针。

我不喜欢这种令人困惑的废话网络,我正在寻找更好的方法。

请注意,自动指针和共享指针不是我要寻找的——自动指针在销毁时会删除它们的对象,而共享指针在没有更多共享指针指向它时也会这样做。我正在寻找的是一种巧妙的方法,用于在对象销毁时将指向对象的所有指针设置为 null。

4

2 回答 2

8

“计算机科学中的所有问题都可以通过另一个层次的间接性来解决”——大卫·惠勒

在您的情况下,效果很好的是

std::shared_ptr<Object*> pp.

删除对象时,将 shared 设置Object*为 null(例如*pp = 0;)。所有其他用户都在共享Object*, 现在将看到它已变为空。当所有用户都离开时,用于Object*自身的内存也将被释放。

于 2013-05-18T18:42:39.493 回答
0

自动指针和共享指针等基本上只是为您处理此类内容的类。但听起来你的要求略有不同,所以我认为你应该开发自己的类来管理指针并使用它而不是原始指针。这样,您应该能够获得您正在寻找的流畅功能。

于 2013-05-18T18:42:41.913 回答