首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QPointer检查为空?

QPointer检查为空?
EN

Stack Overflow用户
提问于 2015-10-20 20:52:17
回答 1查看 1.8K关注 0票数 2

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-21 08:04:20

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

代码语言:javascript
复制
inline operator T*() const
    { return static_cast<T*>(const_cast<QObject*>(o)); }

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

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

代码语言:javascript
复制
inline bool isNull() const
    { return !o; }

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33246577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档