Недавно я изучил Luabind с намерением интегрировать его в наше программное обеспечение. Я столкнулся с парой проблем, и я просматривал документацию по Rasterbar Software от Luabind и не смог ее решить. По сути, я предоставляю функцию, которая принимает строку и абстрактный базовый класс в качестве параметров. Во-первых, я не уверен, что делаю это правильно, или, возможно, в lua требуется какая-то особая обработка, чтобы это работало. В любом случае, вот код
class UIFactory
{
void addComponentFactory(std::string name, BaseFactory* factory);
}
BaseFactory — это абстрактный базовый класс, который возвращает UIComponent (кнопку, текст и т. д.), и у нас есть производная фабрика с именем TemplateFactory, которая в основном может быть создана следующим образом.
TemplateFactory<Button> buttonFactory = new TemplateFactory<Button>();
Затем мы передавали бы их в UIFactory на С++ вот так...
uiFactory.addComponentFactory("Buttons", buttonFactory);
в луабинде...
module(state)
[
class_<UIFactory>("UIFactory")
.def(constructor<>())
.def("AddFactory", &UIFactory::addComponentFactory)
];
а на луа...
uiFactory = UIFactory()
buttonFactory = ButtonFactory()
uiFactory:AddFactory("Button", buttonFactory)
Эта последняя строка не выполняется, я проверил, что фабрика кнопок и фабрика пользовательского интерфейса были созданы, и они были созданы. Есть ли что-то, что я упускаю?
Помощь приветствуется.
print
утверждениями), что Lua зашел так далеко? - person Nicol Bolas   schedule 09.04.2012