我之前曾问过this question如何使用boost::serialization::access
进行“版本化”序列化
我能够做一些我想要的东西,但似乎有很大的局限性。
具体来说,我希望能够在运行时更改版本并在代码中动态更改序列化版本。
然而,宏
BOOST_CLASS_VERSION(ClassName, ver)
似乎不允许这种行为。
我想我可以创建不同的类,并在每个需要时使用它们,但我不愿意这样做,因为这需要对我们进行大量的代码更改。
有没有办法以编程方式更改类以在同一执行期间使用不同的版本?
对我们需要做的更多解释:
我正在尝试使用的用例是旧版本中的程序读取(首次运行/升级时),然后使用新版本编写,然后还能够读取该新版本。
答案 0 :(得分:1)
设计似乎打算不动态更改版本。但是,通过 serialize , save 或 load 函数的 version 参数,可以支持读取旧数据。 。也就是说,在您的加载功能中,您可以检查版本并查看是否必须以不同方式加载特定部件。因此可以加载旧数据,但必须在一组序列化函数中完成。