C++ lua - 有效地从注册表中检索元表

目前,在C++中为lua创建元表对象,我使用以下代码:

template <typename T>
static void RegisterObject(lua_State *L, luaL_Reg Functions[], const char *Name)
{
    luaL_newmetatable(L, Name);
    luaL_register(L, NULL, Functions);
    lua_pushvalue(L, -1);
    lua_setfield(L, -1, "__index");
    lua_setglobal(L, Name);
}

而在使用以下代码将其推到堆栈时:

lua_pushlightuserdata(L, /*Object*/);
luaL_getmetatable(L, /*Object Name*/);
lua_setmetatable(L, -2);
return 1;

有没有有效的方法获得要推入堆栈的表?我不想使用字符串来获取元表。

点赞