我有一个std ::对象列表,我想给Lua一个返回其2D位置的函数。 所以我需要创建一个表格表
{ {x,y}, {x,y}, {x,y}...}
由于它全部在列表中,我需要在迭代列表时创建它..
lua_newtable(L_p); // table at 0
int tableIndex = 1; // first entry at 1
for( std::list<AmmoDropped*>::iterator it = m_inputAmmosDropped.begin();
it != m_inputAmmosDropped.end();
++it ){
// what do I do here
++tableIndex;
}
// returns the table
return 1;
用整数键和'x'和'y'索引:
positions[0].x
positions[0].y
我尝试通过反复试验,但由于我现在不知道/没有如何调试它,我真的迷路了。
答案 0 :(得分:1)
它会是这样的:
lua_newtable(L); // table at 0
int tableIndex = 1; // first entry at 1
for(std::list<AmmoDropped*>::iterator it = m_inputAmmosDropped.begin();
it != m_inputAmmosDropped.end();
++it ){
lua_createtable(L, 2, 0); // a 2 elements subtable
lua_pushnumber(L, it->x);
lua_rawseti(L, -2, 1); // x is element 1 of subtable
lua_pushnumber(L, it->y);
lua_rawseti(L, -2, 2); // y is element 2 of subtable
lua_rawseti(L, -3, tableIndex++) // table {x,y} is element tableIndex
}
return 1;
警告:这是我头脑中尚未经过测试的代码......