【发布时间】:2011-03-27 09:25:24
【问题描述】:
好吧,这更像是一个健全性检查。
假设我们有一个名为 lua_State 的结构,现在我需要创建不确定数量的唯一 lua_State。为了确保我不会两次使用相同的变量名,我需要有某种方法来在每次创建新状态时获取一个唯一变量。
但是,只有一种方法(我认为?)来创建新状态,如下所示:
lua_State *S = lewL_newstate();
现在我需要一些方法来动态地将“S”更改为……随便什么。
例如:如果我有 4 个 lua 文件,并且我想将每个文件加载到它们自己的 lua_State 中,我会调用:lua_State *A = lewL_newstate();首先,lua_State *B = lewL_newstate();第二个,依此类推。请记住,lua 文件的数量会有所不同,因此创建固定数量的状态可能不会很好。
我该怎么做呢?
澄清:
.h
struct lua_State
.cpp
createNewState(Lua_State* something){
lua_State* something = luaL_newstate();
}
我想过创建一个
std::map<int, lua_State*> luaMap;
但是我仍然会遇到为每个 int-index 实际生成(因为没有更好的词)变量名的问题。
那么,我是不是喝了太多咖啡,是否有一个显而易见的简单解决方案可以解决我正在尝试做的事情,还是应该停止编码,直到疯狂结束?
提前致谢。
【问题讨论】:
-
使用(指向)
lua_states 的数组/向量有什么问题吗? -
为什么你需要唯一的变量名?向量不够好吗?
-
问题不在于存储状态,问题在于根据要加载的 lua 文件数量组成状态变量名称。所以 2 个文件 = 我如何获得 2 个唯一的变量名来调用这些新状态?有点意思是我不知道我需要多少个变量名(状态)。所以我不能事先创建它们。
-
当你的程序运行时,代码已经被编译了,所以在你的程序中添加新的 C++ 变量已经太迟了,因此担心这些变量的名称是没有意义的。您当然可以将名称与您正在加载的文件相关联(如 Reko 的回答),但它们不能是 变量。