2

ゲームの状態マネージャーを書いています。これをどのように行うかについて、ほとんどのロジックがダウンしています。クラスになる状態は、StateManager クラスのスタックで処理する必要があります。各ステートには一時停止機能があり、スタックは STL スタックになります。

必要な処理が完了した状態 (例: 一時停止画面から、ユーザーが [ゲームに戻る] をクリックした場合) は、スタックから削除して削除する必要があります。私の現在のロジック(残念ながらテストできませんでした)は次のようになります。

国はその仕事を終える。その更新関数では、完了したことがわかると、関数を呼び出して状態をクリーンアップします。この関数は、関連付ける必要がある即時のルーズ エンド (存在する場合) を処理し、状態マネージャー スタックから pop 関数を呼び出し、それ自体を削除します。

私が求めているのは、クラスをそれ自体から削除できますか?

4

4 に答える 4

6

C ++-FAQ-liteを参照してください:メンバー関数が言うことは合法(そして道徳的)ですか?delete this?

注意している限り、オブジェクトが自殺しても問題ありません(これを削除してください)。

于 2009-10-11T21:36:53.267 に答える
0

あなたは、電話することさえ可能です:

delete this;

しかし、それは一種の毛深い、醜い、そしておそらく危険です...

関連している:

于 2009-10-11T21:34:29.147 に答える
0

もちろん:

void cleanup(){
 delete this;
}

もちろん、確認する必要のあることはたくさんあります(特に、スタック上に作成されたインスタンスを使用してそれを実行しようとすると、問題が発生する可能性があります。

于 2009-10-11T21:34:45.217 に答える
0

はい-delete this;有効です。これが、削除を実行する関数で実行されるクラスに関連する最後のことであることを確認してください。

于 2009-10-11T21:35:07.317 に答える