我有一个结构:
struct MyStruct
{
uint16_t num_attributes;
std::vector<attribute> attributes; //size of num_attributes
uint16_t num_methods;
std::vector<method> methods; //size of num_methods
...
}
我目前一次只读一个成员,只是硬编码。这意味着如果我将来对结构进行更改,我将不得不彻底检查该代码。
有没有更好的方法可以自动将数据读入结构中?
答案 0 :(得分:0)
简答:没有
答案很长: 自动执行序列化需要语言支持内省,以便序列化库可以查看序列化所需的结构。 C ++不支持内省。
有一些序列化库可以为您自动执行某些过程。但是,它们都要求您仍然列出每个结构成员。
例如,像Boost Serialization这样的库只会让您添加代码来序列化每个成员。该库处理递归,编写集合,版本控制等。这些好处确实增加了,尤其是版本控制方面。