QPointer
が指しているオブジェクトを削除すると、 の値がチェックされ、QPointer
ではありませんNULL
が、そのisNull
機能をチェックすると、 が返されますtrue
。
さらに奇妙なことに、( !m_qpointer
) を実行すると、 も返されますtrue
。では、これはどのように可能ですか?
(!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
保護しているポインターを削除した後でも、オブジェクトは有効なオブジェクトである必要があります。