通常、オブジェクトを削除するときは、ゼロに設定します。これは、ルーチンをコーディングして、オブジェクトがゼロでないことを確認してから続行するのに役立ちます。
ただし、deleteLater()
関数を使用すると、制御できなくなります。有効なアイテムなのか、新しいアイテムを作成する必要があるのかわかりません。私が見つけた解決策は、状態を個別に追跡することでしたが、より良い方法はありますか?
通常、オブジェクトを削除するときは、ゼロに設定します。これは、ルーチンをコーディングして、オブジェクトがゼロでないことを確認してから続行するのに役立ちます。
ただし、deleteLater()
関数を使用すると、制御できなくなります。有効なアイテムなのか、新しいアイテムを作成する必要があるのかわかりません。私が見つけた解決策は、状態を個別に追跡することでしたが、より良い方法はありますか?
deleteLater()
オブジェクトを呼び出してからポインタを に設定しても問題はありませんnullptr
。Qt フレームワークはオブジェクトを安全に削除します。
別の方法として、破棄されたシグナルに接続してオブジェクトの破棄を通知し、ポインターをnullptr
そのスロットに設定することもできます。
削除されるオブジェクトが QObject の場合、QPointer を使用できます。これにより、NULL に設定されます。
「ポインタをゼロにする」という意味ですか?C ++では、オブジェクトとオブジェクトへのポインタを区別することがJavaよりも重要です。ここでは、オブジェクトをゼロにするとそのデストラクタが機能しないため、特に重要です。オブジェクトへのポインタをゼロにしても、問題はありません。Qtが「削除するオブジェクト」リストに別のポインタを追加するからです。