当我删除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
对象应该仍然是一个有效的对象,即使删除了它所保护的指针。