3

我之前问过这个关于如何使用“版本化”序列化的问题boost::serialization::access

我已经能够做一些我想做的事,但似乎有很大的限制。

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

然而,宏

BOOST_CLASS_VERSION(ClassName, ver)

似乎不允许这种行为。

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

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

再解释一下我们需要做什么:

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

4

1 回答 1

1

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

于 2012-05-16T15:06:21.913 回答