Я использую Luabind, чтобы открыть свой игровой движок для Lua. Недавно я столкнулся с проблемой, когда узнал, что у меня нет возможности создать «новый», например. GUIObject *obj = новый GUIObject ()в Lua, вместо этого все, созданное в Lua, принадлежит Lua.
Ну, это не было большой проблемой, я решил просто создать своего рода шаблон Factory для объектов, например. мой GUIManager имеет
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())
Однако я чувствую, что это неправильно, поскольку я, по сути, создаю объект для передачи, я уверен, что есть более простой способ, но все другие методы, которые я пробовал до сих пор, не согласны ни с компилятором, ни с Любинд.
Не стесняйтесь запрашивать дополнительную информацию, если это необходимо
Спасибо