当我删除QPointer
所指向的对象时,我会检查QPointer
的值,而不是NULL
,但当我检查isNull
时函数,它返回true
。
更奇怪的是,当我做(!m_qpointer
)时,它也会返回true
。
那怎么可能呢?
答案 0 :(得分:2)
(!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 。为什么它应该为空? <{1}}对象即使在删除它正在保护的指针后仍然应该是一个有效的对象。