--- ---上下文
我想要一个名为" fileProcessor"的类。这个类是完全静态的,只是作为一个方便的命名空间(在我的常规库命名空间内)用于某些全局函数。这是班级的基本蓝图,只有相关的东西
class fileProcessor{
private:
lua_State* LUA_state;
public:
static std::variant<type1,type2> processFile(const char* filePath,const char* processorScript);
}
请再次注意,我忽略了课堂上的大部分内容,所以如果有什么事情似乎很奇怪,请忽略它。
应该做什么进程文件:
我遇到了第4步的问题,也是脚本编写的一个重要部分。
--- ---问题
如何在lua中创建一个完整的新对象type1或type2,从lua中写入它然后从lua堆栈返回到c ++并仍然知道它的type1还是type2?
---没有提供示例,因为这个问题更为一般,我提供课程的唯一原因是上下文.---
答案 0 :(得分:2)
看起来你正试图以相反的方式去做。我引用了this回答的一部分:
...你期望Lua成为主要语言,而C ++成为客户端。问题是,Lua C界面的设计并不像那样,Lua意味着是客户端,而所有的努力工作都是用C语言编写的,这样Lua可以毫不费力地调用它。
如果您确信没有其他方法可以按照其他方式执行此操作,则可以按照that给出的解决方法进行操作。否则,我认为你可以通过使用LUA来实现你所需要的。
LUA有8种基本类型( nil,boolean,number,string,userdata,function,thread,和 table )。但是,您可以根据需要添加新类型,方法是在本机C ++中创建一个类作为新类型并使用LUA注册它。
您可以通过以下方式注册:
luna.h
(as shown in this tutorial)。类对象实例在您的本机C ++代码中创建并传递给LUA。然后LUA使用类接口给出的方法。