【发布时间】:2016-08-02 00:23:21
【问题描述】:
我正在尝试学习如何序列化 C++ 对象。
在这里阅读了几篇文章后,使用boost 序列化函数并使用加载/保存函数进行归档似乎是一个好主意。但是,我想避免使用 boost 库。
从概念上讲,我可以在不知道其字段的情况下保存对象吗?在 C++ 中没有反射,存储对象的唯一方法是知道它的所有类成员。
可以使用stringstream和重载<<操作符将对象转为字符串,可以直接保存对象吗?
谢谢,K。
【问题讨论】:
-
没有。在没有反思的语言中,除非您知道这些成员是什么,否则您无法对成员做任何事情。
-
必须有人知道它的字段,可能是它自己。您可以使调用者不需要知道字段,并且有一个用于读取和写入的函数。请注意,序列化有很多棘手的问题,例如版本控制等,这使得一刀切的库成为问题。
标签: c++ serialization