如何在Lua函数中获取从C++发送的表的更新值?

我试图将float向量从C++函数作为表参数传递给Lua函数,然后在调用Lua函数之后获取向量的更新值。

以下是简单的示例代码。

void myFunc(lua_State *L, std::vector<float> &vec) {

    lua_getglobal(L, "myFunc");
    lua_newtable(L);

    for (size_t i=0; i<vec.size(); ++i) {

        lua_pushinteger(L, i+1);
        lua_pushnumber(L, vec[i]);
        lua_settable(L, -3);
    }
    if (lua_pcall(L, 1, 0, 0) != 0) {

        std::cout << "Error : Failed to call myFunc" << std::endl;
    }
}

然后我可以调用这个函数如下。

std::vector<float> vec = {1,2,3,4,5}; //一个将被作为表发送到Lua的数组
    myFunc(L, vec); //调用Lua中的"myFunc"函数并将数组作为参数传递

    /* <将被调用的Lua函数>
     function myFunc(t)
        for i=1, #t do
            t[i] = t[i] * 2
        end
     end
     */

    //如何在这里更新"vec"的元素,使其变为{2,4,6,8,10}?

正如我在代码中所评论的那样,我希望能够在调用Lua函数之后更新vector<float> vec的元素。

是否可以将数组作为引用传递给Lua函数?(就像C++函数中的工作方式一样)

如果不行,是否可以获取Lua表(t)的值,以便在调用函数后将它们写回到C++中的浮点向量中?

谢谢!

点赞