首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是使用QPointer的正确方式吗?

这是使用QPointer的正确方式吗?
EN

Stack Overflow用户
提问于 2014-12-11 19:03:31
回答 1查看 2K关注 0票数 2

如何检查指针的内容是否被删除?如果我像这样使用QPointer:

代码语言:javascript
复制
myClass::myClass(myStruct* p){
 _p = p;//_p is a QPointer<myStruct>
}

myClass::function(){
if(_p) {_p->function();}
}

那我就有

代码语言:javascript
复制
myStruct* p = new myStruct();
myClass A(p);
delete p;
A.function();

最后一个A.function()是否会调用_p->函数(),从而导致访问冲突?当我删除p时,_p会发生什么情况?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-11 20:10:49

如果myStruct是一个QObject子类,那么您的代码应该可以工作,就像从显示的代码片段中可以说的那样。QObject析构函数将清除指向已销毁实例的每个QPointer。如果它不是QObject子类,那么您应该得到编译/链接错误。

来自文档的报价

请注意,类T必须继承QObject,否则将导致编译或链接错误。

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

https://stackoverflow.com/questions/27430456

复制
相关文章

相似问题

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