这是使用QPointer的正确方法吗?



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

myClass::myClass(myStruct* p){
 _p = p;//_p is a QPointer<myStruct>
}
myClass::function(){
if(_p) {_p->function();}
}

那么我有

myStruct* p = new myStruct();
myClass A(p);
delete p;
A.function();

最后一个 A.function() 会调用 _p->function() 并因此导致访问冲突吗? 当我删除 p 时,_p会怎样?

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

引用文档:

请注意,类 T 必须继承 QObject,或者编译或链接错误 将产生。

相关内容

  • 没有找到相关文章

最新更新