如何检查指针的内容是否被删除?如果我像这样使用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->函数(),从而导致访问冲突?当我删除p时,_p会发生什么情况?
发布于 2014-12-11 20:10:49
如果myStruct是一个QObject子类,那么您的代码应该可以工作,就像从显示的代码片段中可以说的那样。QObject析构函数将清除指向已销毁实例的每个QPointer。如果它不是QObject子类,那么您应该得到编译/链接错误。
来自文档的报价
请注意,类T必须继承QObject,否则将导致编译或链接错误。
https://stackoverflow.com/questions/27430456
复制相似问题