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:如果您想要感謝某人的答案,請接受答案旁邊的複選標記。 –