これは私の問題であるため、すべてのユーザーデータ「テーブル」(ユーザーデータテーブルと呼ばれますか?)にアクセスしてLuaから削除できるかどうか疑問に思っています:
a = Object(5, 5)
a:Delete()
a:SetPosition(3,3)
ご覧のとおり、最初にオブジェクトを作成し、マップ クラスで "new" を使用して割り当てられた Object という名前の C++ クラスへのポインターを保存します。次に、オブジェクトを削除します。つまり、マップ クラスのポインターに割り当てられたメモリを削除します。そして最後に SetPosition を呼び出します。メモリがまだ c++ オブジェクト クラスに割り当てられている場合は、すべてが楽しく実行されます。しかし、それが削除の場合 (この場合は SetPosition(...) 呼び出しの前に Delete() を呼び出したため)、私のプログラムはクラッシュします。だから私が疑問に思っているのは次のとおりです:
Delete を呼び出して、lua の変数 'a' を nil に設定することは可能ですか? Delete が nil を返す場合、「a = a:Delete()」のようなことができることはわかっていますが、「a =」の部分を忘れると失敗します。また、ユーザーデータを削除して、SetPositon() を呼び出すときに存在しないかどうかを確認することが可能かどうか疑問に思っています。そうでない場合は、単に戻ります。