当您拥有结构名称和字段值列表时,是不是可以以编程方式创建结构对象并填充字段
Posted
技术标签:
【中文标题】当您拥有结构名称和字段值列表时,是不是可以以编程方式创建结构对象并填充字段【英文标题】:Is it possible to programmatically create objects of structs and fill the fields, when you have a list of struct names and field values当您拥有结构名称和字段值列表时,是否可以以编程方式创建结构对象并填充字段 【发布时间】:2016-04-27 11:26:31 【问题描述】:当您拥有结构名称和字段值的列表时,是否可以以编程方式创建结构对象并填充字段? 假设我必须从(JSON)文件中读取条目并填写我的结构。我有值结构名称和值,但我想编码这样代码将循环所有结构并填充内存数据。可能听起来很奇怪,但有什么办法吗?
【问题讨论】:
你不能用struct
来做,但是你可以使用用户定义的类型来创建这样的数据结构。有很多 json
库可以为您执行此操作。
【参考方案1】:
不。您正在寻找的语言功能称为 reflection,而 C++ 没有。
您可以建立一个std::map<std::string, SomeType>
来代替吗?如果SomeType
因字段而异,boost::variant
将允许您在任何给定时间存储多种类型中的任何一种(它基本上是一个标记的联合)。
或者你可以切换到 Python。 :)
【讨论】:
不能使用可变参数模板吗?我们的库使用非常有限,我们使用的是 C++11 编译器 没有。可变参数模板是一种编译时构造,允许您使用可变数量的模板参数创建类/函数模板。以上是关于当您拥有结构名称和字段值列表时,是不是可以以编程方式创建结构对象并填充字段的主要内容,如果未能解决你的问题,请参考以下文章