0
我需要使用luabind注册一个成员函数,它应该将lua函数作为参数。对于任何正常功能我通常只是这样做:但是如何用lua-function参数使用luabind注册成员函数?
int SomeLuaFunction(lua_State *l)
{
luaL_checkfunction(l,1);
int fc = luaL_ref(l,LUA_REGISTRYINDEX);
[...]
}
Luabind使用的参数列表,所以我不知道该如何告诉它我期待的功能:
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 ::模块)
卢阿 - 例如我想要做到:
local al = ALSound() -- I'm aware this wouldn't work since I haven't defined a constructor
al:CallOnStateChanged(function()
[...]
end)
也许有一种方法可以将附加函数添加到已经注册的类中,而不需要luabind?任何建议,将不胜感激。
嗯,我简直不敢相信那么简单。谢谢,它完美的工作! – Silverlan
@Silverlan:如果您想要感谢某人的答案,请接受答案旁边的复选标记。 –