小编Opt*_*ggy的帖子

用于创建对象的C++模板方法

我正在使用Luabind将我的游戏引擎暴露给Lua.我最近遇到了麻烦,当我发现我无法在Lua中创建一个"新"例如GUIObject*obj = new GUIObject(),而在Lua中创建的所有内容都由Lua拥有.

那不是一个大问题我决定在对象上创建一种工厂模式,例如我的GUIManager Has

class GUIManager {
template <class T> T * CreateObject( T classType )
{
    return new T();
}
}
Run Code Online (Sandbox Code Playgroud)

我的Luabind Bindings看起来像这样:

class_<GUIManager>("GUIManager")
         .def("CreateObject", (GUILabel*(GUIManager::*)(GUILabel classType))&GUIManager::CreateObject<GUILabel>)
         .def("CreateObject", (GUIImage*(GUIManager::*)(GUIImage classType))&GUIManager::CreateObject<GUIImage>)
Run Code Online (Sandbox Code Playgroud)

通过调用以下内容可以找到Lua的所有内容:

testLabel = theGUI:CreateObject(GUILabel())
Run Code Online (Sandbox Code Playgroud)

但是我觉得这不是"正确",因为我实际上是在创建一个传入的对象,我确信有一种更简单的方法,但到目前为止我尝试的所有其他方法都不同意编译器或Luabind.

如果需要,请随时询问更多信息

谢谢

c++ lua templates luabind

5
推荐指数
1
解决办法
517
查看次数

标签 统计

c++ ×1

lua ×1

luabind ×1

templates ×1