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 объект должен оставаться действительным объектом даже после удаления указателя, который он защищает.

Другие вопросы по тегам