当我删除QPointer所指向的对象时,我检查QPointer的值,它不是NULL,但是当我检查它的isNull函数时,它返回true。
更奇怪的是,当我做(!m_qpointer)时,它也会返回true。这怎么可能?
发布于 2015-10-21 08:04:20
(!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对象仍然应该是一个有效的对象。
https://stackoverflow.com/questions/33246577
复制相似问题