c++ - 如何将 C++ vector 分配给非表全局变量

标签 c++ lua lua-table

我正在尝试将浮点 vector 分配给 Lua 的全局变量。

首先,当我将 vector 分配给一个已经键入表的变量时,我的代码工作正常。

但是,当我将 vector 分配给非表变量时,它会崩溃。 (例如 nil、数字、字符串)

这是我的代码。

  // get global table
  lua_getglobal(L, "mytab");

 // if it is table, clear table
 if(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);
  }
  // set table
  vector<float> vec = {1,2,3,4,5};
  for (int i=0; i<vec.size(); ++i) {
      lua_pushinteger(L, i+1);
      lua_pushnumber(L, vec[i]);
      lua_settable(L, -3);
   }
   lua_pop(L, 1);

如果全局变量 mytab 设置为 nilnumberstring,在 Lua 中调用它会导致崩溃.

我该如何解决这个问题?谢谢你!

最佳答案

您似乎想为全局变量 mytab 设置一个新表。所以,忘记第一部分并开始吧:

  // set table
  lua_newtable(L);
  vector<float> vec = {1,2,3,4,5};
  for (int i=0; i<vec.size(); ++i) {
      lua_pushinteger(L, i+1);
      lua_pushnumber(L, vec[i]);
      lua_settable(L, -3);
   }
  lua_setglobal(L, "mytab");

关于c++ - 如何将 C++ vector 分配给非表全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51040887/

相关文章:

c++ - 链接我的项目 C++ 的问题

c++ - 在 C++ 中使用最小类型歧义

java - 使用 LuaJava 在 Lua 脚本和 Java 应用程序之间传输数据

python - 使用 Python 搜索 Lua 文件中的所有函数调用

lua - 使用选定的键迭代表

list - 在 Lua 列表中搜索项目

binding - Lua 绑定(bind) : table vs userdata

c++ - UML 类图(操作隔间)

c++ - C++中静态变量的个数有限制吗

linux - 如何在ubuntu上更新lua包?