在C ++中是否可以根据文件内容创建结构类型?
STRUCT_NAME int var1; int var2; string v3; STRUCT NAME *pointer;
第一行是结构的名称,其他行是变量
答案 0 :(得分:2)
如果您正在阅读文件并尝试创建此struct
,
- >如果在同一个程序中,即运行时则否;因为你无法编译当前正在执行的源代码
- >对于一些尚未编译的不同源代码,您正在使用文件操作进行操作,然后是
答案 1 :(得分:2)
你的意思是在你的应用程序运行时吗?不,你不能这样做,所有类型必须在编译时知道。当然,您始终可以创建某种可在运行时动态配置的容器对象,但这是一个更先进的系统。
另一方面,如果你打算在构建应用程序时这样做一次,你可以编写一个简单的工具来吃掉你的文本文件并发出一个C ++头文件,以后你可以在编译时使用它。
答案 2 :(得分:1)
没有。您最接近的是std::map<std::string, boost::any>
(如果您可以限制类型集,则为boost::variant
。)
答案 3 :(得分:0)
无论@lindydancer @iammilind @james说的是正确的......你不可能一次性去做。你可以解决这个问题(虽然这不是专业的做法): 1.首先读取定义结构的文件并创建新文件(Cpp和h文件)。 2.现在编译新文件并向您的用户提供新的exe文件,您可以在后台执行此过程,以便为用户提供所有动态..(但是请某人必须做这项工作......)