13

通常,当我删除一个对象时,我将其设置为零。这有助于我编写例程以检查对象不为零然后继续。

但是,如果我使用该deleteLater()功能,我将失去对它的控制。我不知道它是否是一个有效的项目,或者我是否需要创建一个新项目。我找到的解决方案只是单独跟踪状态但是有更好的方法吗?

4

3 回答 3

22

如果您调用deleteLater()对象然后将指针设置为nullptr. Qt 框架会为您安全地删除对象。

作为替代方案,您还可以连接到被破坏的信号以通知您的对象的破坏并将指针设置nullptr在该插槽中。

于 2011-05-23T10:46:12.853 回答
10

如果要删除的对象是 QObject,则可以使用 QPointer。这会将其设置为 NULL。

于 2011-05-23T10:48:49.633 回答
4

您的意思是“将指针归零”吗?在 C++ 中,区分对象和指向它的指针比在 Java 中更重要。在这里,它特别重要,因为如果你将对象归零,它的析构函数将不起作用。如果你将一个指向对象的指针归零,没问题,因为 Qt 会添加另一个指向“要删除的对象”列表的指针。

于 2011-05-23T12:02:19.133 回答