首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用luabind注册带有lua-function参数的成员函数?

如何使用luabind注册带有lua-function参数的成员函数?
EN

Stack Overflow用户
提问于 2013-05-26 20:52:00
回答 1查看 497关注 0票数 0

我需要使用luabind注册一个成员函数,该函数应该以lua函数作为参数。对于任何普通函数,我通常会这样做:

代码语言:javascript
复制
int SomeLuaFunction(lua_State *l)
{
    luaL_checkfunction(l,1);
    int fc = luaL_ref(l,LUA_REGISTRYINDEX);
    [...]
}

然而,Luabind使用参数列表,所以我不确定如何告诉它我正在等待一个函数:

代码语言:javascript
复制
void Lua_ALSound_CallOnStateChanged(lua_State *l,boost::shared_ptr<ALSound> pAl,<function-parameter?>)
{
    [...]
}
lua_bind(luabind::class_<ALSound COMMA boost::shared_ptr<ALSound>>("ALSound")
    .def("CallOnStateChanged",&Lua_ALSound_CallOnStateChanged)
);

(这里只显示了代码的相关部分,lua_bind使用的是luabind::模块)

lua-我正在尝试实现的示例:

代码语言:javascript
复制
local al = ALSound() -- I'm aware this wouldn't work since I haven't defined a constructor
al:CallOnStateChanged(function()
    [...]
end)

也许有一种方法可以在不使用luabind的情况下向已经注册的类添加额外的函数?如有任何建议,我们将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2013-05-26 20:54:36

如果你想拥有一个接受Lua对象作为参数的函数,你应该让这个函数接受一个luabind::object作为参数。然后,您可以检查它是否是一个函数,如果是,则调用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16759408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档