2

QPointerが指しているオブジェクトを削除すると、 の値がチェックされ、QPointerではありませんNULLが、そのisNull機能をチェックすると、 が返されますtrue

さらに奇妙なことに、( !m_qpointer) を実行すると、 も返されますtrue。では、これはどのように可能ですか?

4

1 に答える 1

4

(!m_qpointer)で定義されているこの演算子により、指しているオブジェクトを削除すると true を返しますqpointer.h

inline operator T*() const
    { return static_cast<T*>(const_cast<QObject*>(o)); }

ガードしているポインタを返します。削除されている場合は null になります。

isNull()ガードしているポインターが null の場合は true を返します。

inline bool isNull() const
    { return !o; }

今、 QPointer の値をチェックすることで何を意味するのかわかりませんが、それは NULL ではありません。なぜヌルにする必要があるのですか?QPointer保護しているポインターを削除した後でも、オブジェクトは有効なオブジェクトである必要があります。

于 2015-10-21T08:04:20.013 に答える