だが、私はこのようなクラスがあるとしましょうインスタンス化する方法を理解する助けが必要このような:はluabindは、クラス
A = Foo();
その時点での実際の「存在の状態は何ですか?
ヒープのどこかにありますか?ルアはどこかの参照を保持していますか? (またはluabind :: object?)
私は、それが新しいものか同等のものによって割り当てられたように、ポインタにしか使えないと感じています。
しかし、lua_doSomething(A & a)
のような参照を受け入れる関数をバインドすることができ、実際に参照することになります。 私はこれがちょうどa
を*a
として渡すルアビンンドかもしれないことを知っていますが、それがどうなるかは分かりません。
私がこれを求めている理由は、スクリプトでインスタンス化されたオブジェクトの寿命を少し良くすることを理解し予測することです。
こと、および所有権または寿命があれば変更した場合、私が代わりに上記のようなLUAするクラスを露出させる、私はこのようにそれを行う、不確かさ:
A * lua_CreateA()
{
return new A();
}
module(luaState)
[
class_<A>("Foo")
];
module(luaState)
[
def("createA",&lua_CreateA)
];
そして
A = createA();
のようにそれを使用して
私が今まで理解しているロジックでは、このようなルアバインドの割り当てがバインドされたコンストラクタを使用した場合と同じでなければ、私は新しいオブジェクトを割り当てるため、このケースではクリーンアップを実行する必要があります。要するに
、私は...ここ オブジェクトの有効期間とスタッフについて本当に困惑している私は、これに関連するキーワードをGoogleで検索、しかし、私だけではありません http://www.gamedev.net/topic/525692-luabind-ownership-and-destruction/
のようなものを取得しています本当に私が知りたいもの。 割り当て、インスタンス化、存続期間、およびそのすべてについて、シーンの裏でどのように処理されるかを具体的な方法で理解したいと思います。