QPointer check is NULL?



当我删除QPointer指向的对象时,我检查QPointer的值,它不是NULL,但当我检查它的isNull函数时,它返回true

更奇怪的是,当我做(!m_qpointer)它也返回true。这怎么可能呢?

(!m_qpointer)在删除它所指向的对象时返回true,因为在qpointer.h中定义了这个操作符:

inline operator T*() const
    { return static_cast<T*>(const_cast<QObject*>(o)); }

返回它所保护的指针。如果它已被删除,那么它将为空。

isNull()如果保护的指针为空,则返回true:

inline bool isNull() const
    { return !o; }

现在我不确定你的意思是我检查QPointer的值,它不是NULL。为什么它应该是空的?QPointer对象应该仍然是一个有效的对象,即使删除了它所保护的指针。

相关内容

  • 没有找到相关文章

最新更新