В моем проекте я создаю QObject
экземпляров и даю им отношения родитель-потомок.Я также хочу отслеживать некоторые объекты с QSharedPointer
экземплярами.
Когда объект удаляется, либо delete childObject;
, либо delete parentObject;
, я бы хотел, чтобы экземпляры QSharedPointer
возвращали true
при вызове isNull()
.
Однако при удалении любого объекта, на который указывает 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
выйти за рамки.