gpt4 book ai didi

C++11 luabind 集成,功能失败

转载 作者:太空宇宙 更新时间:2023-11-04 11:27:08 25 4
gpt4 key购买 nike

我正在尝试使用 luabind 将 LUA 集成到我的程序中,但我遇到了一个大障碍。

我对 LUA 的调用约定非常不熟悉,我觉得我缺少一些简单的东西。

这是我的 C++ 代码:

struct app_t
{
//...
void exit();
void reset();

resource_mgr_t resources;
//...
};

struct resource_mgr_t
{
//...
void prune();
void purge();
//...
};

extern app_t app;

还有我的 luabind 模块:

luabind::module(state)
[
luabind::class_<resource_mgr_t>("resource_mgr")
.def("prune", &resource_mgr_t::prune)
.def("purge", &resource_mgr_t::purge)
];

luabind::module(state)
[
luabind::class_<app_t>("app")
.def("exit", &app_t::exit)
.def("reset", &app_t::reset)
.def_readonly("resources", &app_t::resources)
];

luabind::globals(state)["app"] = &app;

我可以很好地执行以下 lua 命令:

app:exit()
app:reset()

但是,下面的调用失败了:

app.resources:purge()

出现以下错误:

[string "app.resources:purge()"]:1: attempt to index field 'resources' (a function value)

非常感谢任何帮助!

最佳答案

When binding members that are a non-primitive type, the auto generated getter function will return a reference to it.

而且,就像在 app:reset() 中一样,resources 是一个实例成员字段。

所以,像这样使用它:

app:resources():purge()

关于C++11 luabind 集成,功能失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26272193/

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