1

私は最近、ソフトウェアに統合することを目的としてLuabindを学んでいます。私はいくつかの問題に遭遇しました、そして私はLuabindのRasterbar Softwareのドキュメントを見てきました、そしてそれを解決することができませんでした。基本的に、文字列と抽象基本クラスをパラメーターとして受け取る関数を公開しています。まず、これが正しい方法で行われているのか、これが機能するためにluaで特別な処理が必要なのかがわかりません。とにかく、ここにコードがあります

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)
];

そしてluaで...

uiFactory = UIFactory()

buttonFactory = ButtonFactory()

uiFactory:AddFactory("Button", buttonFactory)

その最後の行は実行されません。ボタンファクトリとuiファクトリが作成されていることを確認しました。足りないものはありますか?

ヘルプは大歓迎です。

4

1 に答える 1

1

基本クラスをluaに公開し、buttonFactoryが派生したことを示す必要があることがわかりました

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

luabind::module(state)
[ 
    luabind::class<TemplateFactory<Button>, BaseFactory>("ButtonFactory")
    .def(constructor<>())
]
于 2012-04-10T08:20:37.993 に答える