QPointer check равен NULL?
Когда я удаляю объект QPointer
указывает на, я проверяю значение QPointer
и это не NULL
, но когда я проверю его isNull
функция, это возвращает true
,
И еще более странно, когда я делаю (!m_qpointer
) это также возвращает true
, Так как это возможно?
1 ответ
(!m_qpointer)
возвращает true, когда вы удаляете объект, на который он указывает, потому что этот оператор определен в qpointer.h
:
inline operator T*() const
{ return static_cast<T*>(const_cast<QObject*>(o)); }
Возвращает указатель, который охраняет. Если он был удален, то он будет нулевым.
isNull()
возвращает true, если указатель, который он защищает, равен нулю:
inline bool isNull() const
{ return !o; }
Теперь я не уверен, что вы подразумеваете под проверкой значения QPointer, и оно не равно NULL. Почему это должно быть нулевым? QPointer
объект должен оставаться действительным объектом даже после удаления указателя, который он защищает.