gpt4 book ai didi

c++ - Luabind:派生类作为参数

转载 作者:太空宇宙 更新时间:2023-11-04 12:10:28 29 4
gpt4 key购买 nike

我最近一直在学习 Luabind,目的是将其集成到我们的软件中。我遇到了几个问题,我一直在查看 Luabind 的 Rasterbar 软件文档,但未能解决。基本上,我公开了一个以字符串和抽象基类作为参数的函数。首先,我不确定我是否以正确的方式解决这个问题,或者在 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 工厂是否正在创建,它们确实是。有没有我遗漏的东西?

非常感谢您的帮助。

最佳答案

原来我需要将基类暴露给 lua 并且还要指出 buttonFactory 是派生的

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

luabind::module(state)
[
luabind::class<TemplateFactory<Button>, BaseFactory>("ButtonFactory")
.def(constructor<>())
]

关于c++ - Luabind:派生类作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10076074/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com