我之前问过this question关于如何使用 boost::serialization::access
我已经能够做一些我想做的事,但似乎有很大的局限性。
具体来说,我希望能够在运行时更改版本并在代码中动态更改序列化版本。
但是,宏
BOOST_CLASS_VERSION(ClassName, ver)
似乎不允许这种行为。
我想我可以创建不同的类并在需要时分别使用它们,但我不想这样做,因为这需要我们进行大量代码更改。
有没有办法以编程方式更改类以在同一执行期间使用不同版本?
关于我们需要做什么的更多解释:
我尝试使用的用例是程序读取旧版本(首次运行/升级时),然后使用新版本编写,然后还能够读取该新版本。
最佳答案
该设计似乎有意让您不要动态更改版本。但是,可以通过version 参数为您的serialize、save 或load 函数支持读取旧数据.也就是说,在您的加载函数中,您可以检查版本 并查看是否必须以不同方式加载特定部分。所以加载旧数据是可能的,但它必须在一组序列化函数中完成。
关于c++ - boost::serialization::access 可以在运行时/以编程方式动态更改版本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10620783/