我们的想法是在C++中在运行时创建对象.
此创建的输入将是一个json文件.例如
{
"pi": 3.141,
"happy": true,
"name": "Niels",
"nothing": null,
"answer": {
"everything": 42
},
"list": [1, 0, 2],
"object": {
"currency": "USD",
"value": 42.99
}
}
Run Code Online (Sandbox Code Playgroud)
在C++中有什么选择?可以加强对此的帮助吗?
你不能在标准C++中做(在运行时定义类),因为一个类有一些与之关联的代码(至少是隐式构造函数和析构函数,通常是成员函数,并且通常有一些vtable,由编译器,指向代码).
您的JSON解析库(例如jsoncpp)将提供表示任意JSON对象(在大括号中)的类型.
在某些操作系统上,您可以在运行时加载插件(包含代码); 在Linux和POSIX上使用dlopen(3)但要小心名称修改(参见C++ dlopen Mini-HowTo).该插件是一个共享对象,您需要专门编译为与位置无关的代码.几个框架库(Qt,POCO,Boost DLL ...)提供了加载插件的常见抽象,......
您甚至可以(我在MELT中,在Linux上这样做)在运行时在一些临时文件中动态生成一些C++代码,将该临时文件编译成一些临时插件,并加载该插件....所有这些都在同一个过程中.