c++ - 如何将 C++ 向量分配给非表全局变量
问题描述
我正在尝试将浮点向量分配给 Lua 的全局变量。
首先,当我将向量分配给已经键入表的变量时,我的代码可以正常工作。
但是,当我将向量分配给非表变量时,它会崩溃。(例如零、数字、字符串)
这是我的代码。
// 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
如果全局变量设置为nil
,number
或,在 Lua 中调用它会导致崩溃string
。
我怎样才能解决这个问题?谢谢!
解决方案
您似乎想为全局变量设置一个新表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");
推荐阅读
- php - 如何在 PHP 中将文件名重命名为随机文件名?
- c - 如何将具有可变参数的函数声明为stdcall?
- android - 手势 - 控制音量和亮度
- maven - 如何构建maven ear资源
- asp.net - Option Strict 设置为 ON 后期绑定问题
- macos - qt 5.8 os x 在 GUI 应用程序打开时捕获传递的参数
- css - 悬停时的 CSS / SVG 缩放效果导致图像从其位置移动
- javascript - 将 .txt 文件打印成 html
- swift - controlTextDidEndEditing 在 NSTableView 加载时被调用
- ruby - 将数组元素添加到嵌套循环中