1
最近我一直在學習Luabind,意圖將其集成到我們的軟件中。我遇到了一些問題,我一直在看Luabind的Rasterbar軟件文檔,但一直未能解決它。基本上,我公開了一個函數,它將一個字符串和一個抽象基類作爲參數。首先,我不確定我是否以正確的方式開展這項工作,或者可能需要在lua中進行一些特殊處理才能使其工作。總之,這裏的代碼Luabind:派生類作爲參數
class UIFactory
{
void addComponentFactory(std::string name, BaseFactory* factory);
}
BaseFactory是一個抽象基類,返回在UIComponent(按鈕,文本等),我們得出的工廠叫TemplateFactory基本上可以被實例化,像這樣..
TemplateFactory<Button> buttonFactory = new TemplateFactory<Button>();
然後,我們將通過這些在C++中UIFactory這樣的...
uiFactory.addComponentFactory("Buttons", buttonFactory);
在luabind
...
module(state)
[
class_<UIFactory>("UIFactory")
.def(constructor<>())
.def("AddFactory", &UIFactory::addComponentFactory)
];
和盧阿...
uiFactory = UIFactory()
buttonFactory = ButtonFactory()
uiFactory:AddFactory("Button", buttonFactory)
最後一行不執行,即所創建的按鈕工廠和UI工廠進行,他們是我檢查。有沒有我想念的東西?
非常感謝幫助。
你說的「不執行」的意思嗎?你的意思是說,Lua腳本出錯了,或者你的函數沒有被調用,或者是什麼?你是否證實了(比如說'print'語句)Lua正在那麼遠? – 2012-04-09 16:24:10
我已經驗證了前面的語句「buttonFactory = ButtonFactory()」的作用,所以它必須正在工作到那一點。我對lua和luabind很陌生,所以我不確定如何在沒有通過解釋器運行lua打印功能時運行。 – rocklobster 2012-04-09 16:26:38