Trong ví dụ mã: http://lua-users.org/wiki/SimplerCppBindingPorting để Lua 5.2, rắc rối LUA_GLOBALSINDEX
Có mã:
lua_pushstring(L, T::className);
lua_pushvalue(L, methods);
lua_settable(L, LUA_GLOBALSINDEX); //<--- LUA_GLOBALSINDEX removed in Lua 5.2
lua_pushliteral(L, "__metatable");
lua_pushvalue(L, methods);
lua_settable(L, metatable);
Trong Lua 5.2, LUA_GLOBALSINDEX không còn tồn tại. Thay vào đó, nó có lua_setglobal() và lua_getglobal().
Am I correct trong suy nghĩ rằng:
lua_pushvalue(L, methods);
lua_setglobal(L, T::className);
... là sự thay thế chính xác cho:
lua_pushstring(L, T::className);
lua_pushvalue(L, methods);
lua_settable(L, LUA_GLOBALSINDEX);
Tôi quá mới để Lua để chắc chắn, tôi thiên đường không sử dụng nó trong 8 tháng. Nhìn vào tài liệu, tôi là suy nghĩ điều này là chính xác nhưng muốn xác minh.
Có, nhưng tôi có sử dụng lua_setglobal() chính xác không? lua_pushvalue (L, phương pháp); lua_setglobal (L, T :: className); –
@ComServant, nếu 'T :: className' là' char * ', thì có. Nó có hoạt động không? – lhf