gpt4 book ai didi

C++ Lua(对象表的表)

转载 作者:太空狗 更新时间:2023-10-29 21:40:42 24 4
gpt4 key购买 nike

我想在 Lua 中将对象 vector 的 vector 转换为对象表的表。

所以我在 lua 中有一个简单的脚本:

objects = getObjects()
explosion = objects[1][1]:getDestructible()
print (explosion)

这是我的 .cpp 文件

std::vector<std::vector<Area> > objects;
int x;
int y;

y = 0;
lua_newtable(L);
for (std::vector<std::vector<Area> >::iterator it = objects.begin(); it != objects.end(); ++it)
{
lua_createtable(L, 2, 0);
x = 0;
for (std::vector<Area>::iterator it2 = it->begin(); it2 != it->end(); ++it2)
{
lua_newtable(L);
luaL_getmetatable(L, "luaL_Object");
lua_setmetatable(L, -2);
lua_rawseti(L, -2, x + 1);
x++;
}
lua_rawseti(L, -2, y);
y++;
}

当我运行脚本时,我总是得到类似“尝试索引一个零索引”的信息。我错过了什么吗?

最佳答案

感谢大家的帮助!我终于找到了问题的答案,就是这样:

int Lua::luaGetObjects(lua_State *L)
{
int x;
int y;

y = 0;
lua_newtable(L);
for (std::vector<std::vector<Area> >::iterator it2 = objects.begin(); it2 != objects.end(); ++it2)
{
x = 0;
lua_newtable(L);
for (std::vector<Area>::iterator it = it2->begin(); it != it2->end(); it++, x++)
{

lua_pushnumber(L, x);

luaL_getmetatable(L, "luaL_Object");
lua_setmetatable(L, -2);

lua_rawseti(L, -2, x + 1);
x++;
}
lua_rawseti(L, -2, y + 1);
y++;
}
return 1;
}

我终于可以用它来调用了:

objects = getObjects()
explosion = objects[1][1]:getExplosion()
print(explosion)

关于C++ Lua(对象表的表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30461609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com