Метод шаблона C++ для создания объектов

Я использую 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())

Однако я чувствую, что это неправильно, поскольку я, по сути, создаю объект для передачи, я уверен, что есть более простой способ, но все другие методы, которые я пробовал до сих пор, не согласны ни с компилятором, ни с Любинд.

Не стесняйтесь запрашивать дополнительную информацию, если это необходимо

Спасибо

5
задан OpticFroggy 17 August 2012 в 15:43
поделиться