如何检查指针的内容是否被删除?如果我像这样使用 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,或者编译或链接错误 将产生。