LuaWrapper не предназначен для непосредственного подключения к нестатическим функциям в классе. Я предполагаю, что это может быть с какой-то особой хитростью, но вот как я спроектировал это для использования:
static int Widget_AddChild(lua_State* L)
{
Widget* parent = luaW_check<Widget>(L, 1);
Widget* child = luaW_check<Widget>(L, 2);
if (parent && child)
{
lua_pushboolean(L, parent->AddChild(child));
return 1;
}
return 0;
}
// ...
static luaL_reg Widget_metatable[] =
{
{ "AddChild", Widget_Addchild },
// ...
{ NULL, NULL }
};
Я обычно храню нелипа в отдельном файле. В этом случае Widget.cpp / hpp. Затем у меня есть файл LuaWidget, который содержит только такие привязки, которые я пишу по мере необходимости. (У меня также есть несколько фрагментов кода для быстрого и безболезненного написания этих функций. Если вы используете vim, я буду рад поделиться ими)