如何将 C++ vector分配给非表格的全局变量

我试图将浮点数向量分配给Lua的全局变量。

首先,当我将向量分配给已经键入的表格变量时,我的代码可以正常工作。

但是,当我将向量分配给非表格的变量时(例如nil,number,string),它会崩溃。

以下是我的代码。

  // 获取全局表格
  lua_getglobal(L,“mytab”);

 // 如果它是表,则清空表
 如果(lua_istable(L,-1)){
    lua_pushvalue(L,-1);
    lua_pushnil(L);

    while(lua_next(L,-2)){
        lua_pop(L,1);
        lua_pushvalue(L,-1);
        lua_pushnil(L);
        lua_settable(L,-4);
    }
    lua_pop(L,1);
  }
  // 设置表
  vector<float> vec = {1,2,3,4,5};
  forint i = 0; i <vec.size(); ++ i){
      lua_pushinteger(L,i + 1);
      lua_pushnumber(L,vec [i]);
      lua_settable(L,-3);
   }
   lua_pop(L,1);

在Lua中调用此函数会导致崩溃,如果全局变量“mytab”设置为“nil”,“number”或“string”。

我该怎么办?谢谢!

点赞
用户107090
用户107090

你似乎想将一个新表设置为全局变量mytab。所以,忘掉第一部分,直接执行以下代码:

-- 设置表
lua_newtable(L);
local vec = {1,2,3,4,5}
for i=1, #vec do
    lua_pushinteger(L, i)
    lua_pushnumber(L, vec[i])
    lua_settable(L, -3)
end
lua_setglobal(L, "mytab")
2018-06-26 11:45:08