У меня есть подпись этой функции, которую я должен соответствовать
typedef int (*lua_CFunction) (lua_State *L);//target sig
Вот что у меня есть:
//somewhere else...
...
registerFunction<LuaEngine>("testFunc", &LuaEngine::testFunc, this);
...
//0 arg callback
void funcCallback0(boost::function<void ()> func, lua_State *state)
{
func();
}
template<typename SelfType>
void registerFunction(const std::string &funcName, boost::function<void (SelfType*)> func, SelfType *self)
{
//funcToCall has to match lua_CFunction
boost::function<void (lua_State *)> funcToCall = boost::bind(&LuaEngine::funcCallback0, this,
boost::bind(func, self), _1);
lua_register(_luaState, funcName.c_str(), funcToCall);
}
Однако на lua_register(_luaState...
он все еще жалуется на проблемы с конверсией
Ошибка 1, ошибка C2664:
'lua_pushcclosure': не может конвертировать
параметр 2 из
'boost :: function' для
'Lua_CFunction'
Кто-нибудь знает, как это можно решить?