当前位置:  开发笔记 > 编程语言 > 正文

如何将对象列表从C++传递给Lua?

如何解决《如何将对象列表从C++传递给Lua?》经验,为你挑选了1个好方法。



1> Ignacio..:

所以你需要填充一个向量并将其推送到Lua.下面是一些示例代码.应用程序是一个std :: list.

typedef std::list Applications;

我创建一个表并用我列表中的数据填充它.

int ReturnArray(lua_State* L) {
    lua_createtable(L, applications.size(), 0);
    int newTable = lua_gettop(L);
    int index = 1;
    Applications::const_iterator iter = applications.begin();
    while(iter != applications.end()) {
        lua_pushstring(L, (*iter).c_str());
        lua_rawseti(L, newTable, index);
        ++iter;
        ++index;
    }
    return 1;
}

这让我在堆栈中有一个数组.如果它被送回Lua,那么我可以写下面的内容:

for k,v in ipairs( ReturnArray() ) do
    print(v)
end

当然到目前为止,这只是给我一个字符串的Lua数组.要获取Lua 对象的数组,我们只需稍微调整一下您的方法:

S32 LuaRobot::findItems(lua_State *L)
{
    range = getIntFromStack(L, 1);    // Pop range from the stack
    thisRobot->findObjects(fillVector, range);  // Put items in fillVector

    // <<<< Create list of items, return it to lua >>>>

    lua_createtable(L, fillVector.size(), 0);
    int newTable = lua_gettop(L);
    for(int i=0; i < fillVector.size(); i++) {
        TestItem* item = fillVector[i];
        item->push(L);  // put an object, not a string, in Lua array
        lua_rawseti(L, newTable, i + 1);
    }
    return 1;
}

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有