2012-04-09 17 views
1

私は最近Luabindをソフトウェアに統合する意図で学習してきました。私はいくつかの問題に遭遇しました。私はLuabindのRasterbar Softwareのドキュメントを見ていて、それを解決できませんでした。基本的には、文字列と抽象基底クラスを引数とする関数を公開しています。まず、私はこれについて正しい方法を取っているのか、あるいはこれがうまくいくためにルアで必要な特別な扱いがあるのか​​どうかは分かりません。とにかく、ここでコードがLuabind:パラメータとしての派生クラス

class UIFactory 
{ 
    void addComponentFactory(std::string name, BaseFactory* factory); 
} 

だBaseFactoryがUIComponent(ボタン、テキストなど)を返し、私たちは基本的にそのようにインスタンス化することができるTemplateFactoryと呼ばれる工場を導出した抽象基底クラス..です

TemplateFactory<Button> buttonFactory = new TemplateFactory<Button>(); 

その後、我々は

... ...このように、C++でのUIFactoryにluabindで

uiFactory.addComponentFactory("Buttons", buttonFactory); 

をこれらを渡します

module(state) 
[ 
    class_<UIFactory>("UIFactory") 
    .def(constructor<>()) 
    .def("AddFactory", &UIFactory::addComponentFactory) 
]; 

とLUAで...最後の行が実行されない

uiFactory = UIFactory() 

buttonFactory = ButtonFactory() 

uiFactory:AddFactory("Button", buttonFactory) 

は、私は、ボタンの工場とUIの工場が作成されていたことを確認してきましたし、彼らがいました。私は行方不明のものがありますか?

お願いします。

+1

を得たことを示していますか?あなたは、Luaスクリプトのエラーが出ている、あるいはあなたの関数が呼び出されていない、あるいは何か?あなたがルアがこれまでに得ていることを確認しましたか? –

+0

私は前のステートメント "buttonFactory = ButtonFactory()"が機能するので、そのポイントまで動作していなければならないことを確認しました。私はかなりluaとluabindの新機能ですので、インタプリタで実行していないときにluaの印刷機能をどのように動作させるのかは分かりません。 – rocklobster

答えて

1

は、私がLUAに基本クラスを公開する必要が判明し、またbuttonFactoryは、あなたが「実行しない」とはどういう意味ですか

luabind::module(state) 
[ 
    luabind::class_<BaseFactory>("BaseFactory") 
]; 

luabind::module(state) 
[ 
    luabind::class<TemplateFactory<Button>, BaseFactory>("ButtonFactory") 
    .def(constructor<>()) 
] 
関連する問題