【发布时间】:2019-03-25 10:00:09
【问题描述】:
在我的项目中,我创建了QObject 实例并赋予它们父子关系。我还想用QSharedPointer 实例跟踪一些对象。
当一个对象被delete childObject; 或delete parentObject; 删除时,我希望QSharedPointer 实例在调用true 时返回true。
但是,在删除QSharedPointer 指向的任何对象时,我的程序会崩溃。
这是我的代码:
QObject *child = new QObject();
QSharedPointer<QObject> ptr(child);
delete child;
仅此一项会使我的程序崩溃。我阅读了QSharedPointer 的文档,上面写着A QSharedPointer object can be created from a normal pointer,所以我有点困惑为什么QSharedPointer 无法处理指向被删除的对象。
QPointer 没有这个问题,我什至可以调用isNull(),但是我需要QSharedPointer 的原因是因为将创建一些子对象并且没有给定父对象,此时我想要当所有相关的QSharedPointers 超出范围时要删除的子对象。
【问题讨论】:
标签: c++ qt qsharedpointer