我如何检查指针的内容是否被删除?如果我像这样使用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-&gt;函数(),从而导致访问冲突吗?当我删除p时,_p会发生什么?
答案 0 :(得分:2)
如果myStruct
是QObject
子类,那么您的代码应该可以正常工作,就像显示的代码段一样。 QObject
析构函数将清除指向被破坏实例的每个QPointer
。如果它不是QObject
子类,那么你应该得到编译/链接错误。
来自docs:
的引用请注意,类T必须继承QObject,或者编译或链接错误 会结果。