2012-01-29 12 views
6

Nell'esempio di codice: http://lua-users.org/wiki/SimplerCppBindingporting Lua 5.2, LUA_GLOBALSINDEX problemi

V'è il codice:

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); 

In Lua 5.2, LUA_GLOBALSINDEX non esiste più. Invece, ha lua_setglobal() e lua_getglobal().


Am Ho ragione a pensare che:

lua_pushvalue(L, methods); 
lua_setglobal(L, T::className); 

... sia quello corretto per:

lua_pushstring(L, T::className); 
lua_pushvalue(L, methods); 
lua_settable(L, LUA_GLOBALSINDEX); 

Sono troppo nuova per Lua per essere sicuro, mi rifugio Lo ho usato per 8 mesi. Guardando la documentazione, sono che pensa questo è corretto, ma vorrei la verifica.

risposta

4

Invece di lua_settable(L,LUA_GLOBALSINDEX); utilizzare lua_setglobal(L,T::className);. Funziona sia in Lua 5.1 che in 5.2.

+0

Sì, ma sto usando lua_setglobal() correttamente? lua_pushvalue (L, metodi); lua_setglobal (L, T :: className); –

+0

@ComServant, se 'T :: className' è un' char * ', quindi sì. Non funziona? – lhf