- 852 名前:デフォルトの名無しさん mailto:sage [2016/02/23(火) 23:12:34.76 ID:liQI2ylD.net]
- たぶんちゃんとメタテーブルを設定できてないんだと思うよ。
luaL_setmetatable はスタックの一番上の値に対して引数で与えた名前のメタテーブルを設定する メタテーブルの名前はluaL_newmetatableで作った時のもの。 www.lua.org/pil/24.2.3.html ここにstack dumpのサンプルコードがあるからそれで出力して色々なタイミングのスタックの状態を printfデバッグすりゃいいんじゃないかな Lua5.3以降ならluaL_newmetatableした時にそのテーブルに__nameが設定されるから 例えば上記URLのstackDumpで case LUA_TUSERDATA: if (luaL_getmetafield(L, i, "__name") == LUA_TSTRING) { printf("userdata:%s", lua_tostring(L, -1)); lua_pop(L, 1); break; } ってするとユーザーデータに設定されているメタテーブルの名前も一緒に出力できる
|

|