lua_setmetatable莫名其妙的问题

青莲隐身 2018-02-28 05:49:03
CPerson *s = (CPerson*)luaL_checkudata(L, 1, "person");
luaL_argcheck(L, s != NULL, 1, "invalid user data");
//luaL_checktype(L, -1, LUA_TNUMBER);
//int age = lua_tonumber(L, -1);
//lua_settop(L, 0);
TestStr* age = s->GetTest();
lua_pushlightuserdata(L, age);
luaL_setmetatable(L, "teststr");
return 1;


感觉莫名其妙这是lua调进来的,获取另一个userdata,luaL_setmetatable之后,person对象的元表也被设置成teststr了,看了半天API文档,无解啊
...全文
1297 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
青莲隐身 2018-04-28
  • 打赏
  • 举报
回复
已解决 lua所有lightuserdata共享同一份元表
赵4老师 2018-03-05
  • 打赏
  • 举报
回复
学会使用数据断点:
#include <time.h>
#include <stdlib.h>
#include <windows.h>
int main() {
    int a,b[11];//本来是b[10],为判断哪句越界,故意声明为b[11]

    srand((unsigned int)time(NULL));//按两次F11,等黄色右箭头指向本行时,调试、新建断点、新建数据断点,地址:&b[10],字节计数:4,确定。
    while (1) {//按F5,会停在下面某句,此时a的值为10,b[10]已经被修改为对应0..4之一。
        b[(a=rand()%11)]=0;
        Sleep(100);
        b[(a=rand()%11)]=1;
        Sleep(100);
        b[(a=rand()%11)]=2;
        Sleep(100);
        b[(a=rand()%11)]=3;
        Sleep(100);
        b[(a=rand()%11)]=4;
        Sleep(100);
    }
    return 0;
}
勤奋的小游侠 2018-03-05
  • 打赏
  • 举报
回复
那一行报错?报什么错?

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧