Luabind を使用して、ゲーム エンジンを Lua に公開しています。最近、Lua で GUIObject * obj = new GUIObject() などの「新しい」オブジェクトを作成する方法がなく、代わりに Lua 内で作成されたものはすべて Lua によって所有されていることがわかったときに、問題が発生しました。
それは大きな問題ではありませんでしたが、GUIManager Has などのオブジェクトに一種の Factory パターンを作成することにしました。
class GUIManager {
template <class T> T * CreateObject( T classType )
{
return new T();
}
}
私の Luabind バインディングは次のようになります。
class_<GUIManager>("GUIManager")
.def("CreateObject", (GUILabel*(GUIManager::*)(GUILabel classType))&GUIManager::CreateObject<GUILabel>)
.def("CreateObject", (GUIImage*(GUIManager::*)(GUIImage classType))&GUIManager::CreateObject<GUIImage>)
を呼び出すことにより、Luaですべてが機能します。
testLabel = theGUI:CreateObject(GUILabel())
ただし、渡すオブジェクトを本質的に作成しているため、これは「正しくない」と感じています。もっと簡単な方法があると確信していますが、これまでに試した他のすべての方法は、コンパイラまたはルビンド。
必要に応じて、さらに詳しい情報をお気軽にお尋ねください
ありがとう