我正在尝试使用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()
一样,资源是实例成员字段。
因此,像这样使用它:
app:resources():purge()
关于c++ - C++ 11 luabind集成,功能失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26272193/