【发布时间】:2017-10-10 22:14:12
【问题描述】:
---上下文---
我想要一个名为“fileProcessor”的类。这个类是完全静态的,仅作为一些全局函数的方便命名空间(在我的正常库命名空间内)。这是类的基本蓝图,只有相关的东西
class fileProcessor{
private:
lua_State* LUA_state;
public:
static std::variant<type1,type2> processFile(const char* filePath,const char* processorScript);
}
请再次注意,我省略了课堂上的大部分内容,所以如果有任何奇怪的地方,请忽略它。
流程文件应该做的是:
- 读取 filePath 文件,存储包括它在内的所有指令(这是我自己的文件类型或语法风格。这已经正确处理)。指令与字符串一起存储,一个用于命令,一个用于其后的所有内容。
- 读取脚本文件并检查其顶部是否有注释掉的 fileProcessor 行。这是为了确保加载的 lua 脚本是相关的,而不是一些随机行为脚本
- 加载并编译 lua 脚本。
- 使所有读取指令可用(如前所述,它们保存在 2 个字符串的结构中)
- 运行文件并返回一个对象。该对象只能是我在返回类型(变体)中列出的类型
我在第 4 步和脚本的一个重要部分遇到问题。
---问题---
我怎样才能在 lua 中创建一个全新的 type1 或 type2 对象,从 lua 中写入它,然后从 lua 堆栈中将其返回到 c++ 中,并且仍然知道它是 type1 还是 type2?
---没有提供示例,因为这个问题更笼统,我提供课程的唯一原因是为了上下文。---
【问题讨论】:
-
你是如何在c++中运行lua的,你使用的是哪个库?
-
@BjørnMoholt 这与我的问题有关吗?我正在使用您可以从网站获得的普通 lua 库。 lua.org/pil/24.1.html最后几段解释了如何在c++中使用它
-
可能是,根据不同的lua库,我没有同时使用lua和c++的经验,所以我不知道支持什么样的东西,所以我必须检查一下文档,这意味着我必须知道您使用的是哪个库。另一种方法是随机选择一个并希望获得最好的结果,但这似乎并不谨慎。
-
@BjørnMoholt 我正在使用 lua 组织提供的 c api。
-
问题是如何区分来自LUA的“对象”类型与原生类型?