我有一个std::list对象,并且我想给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

我会通过反复试验尝试尝试,但是由于我目前不知道/没有调试方法,所以我真的迷路了。

最佳答案

它会像这样:

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;

警告:这是我脑中未经测试的代码...

关于c++ - 如何通过for循环从C/C++函数将表的表返回给Lua,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13326247/

10-13 06:31