boost :: serialization :: access可以在运行时/以编程方式动态更改版本吗?

时间:2012-05-16 14:32:23

标签: c++ serialization boost

我之前曾问过this question如何使用boost::serialization::access进行“版本化”序列化

我能够做一些我想要的东西,但似乎有很大的局限性。

具体来说,我希望能够在运行时更改版本并在代码中动态更改序列化版本。

然而,宏

BOOST_CLASS_VERSION(ClassName, ver)

似乎不允许这种行为。

我想我可以创建不同的类,并在每个需要时使用它们,但我不愿意这样做,因为这需要对我们进行大量的代码更改。

有没有办法以编程方式更改类以在同一执行期间使用不同的版本?

对我们需要做的更多解释:

我正在尝试使用的用例是旧版本中的程序读取(首次运行/升级时),然后使用新版本编写,然后还能够读取该新版本。

1 个答案:

答案 0 :(得分:1)

设计似乎打算不动态更改版本。但是,通过 serialize save load 函数的 version 参数,可以支持读取旧数据。 。也就是说,在您的加载功能中,您可以检查版本并查看是否必须以不同方式加载特定部件。因此可以加载旧数据,但必须在一组序列化函数中完成。