c++ - boost 序列化: how to choose version at runtime?

标签 c++ serialization boost versioning boost-serialization

我正在使用 Boost Serialization序列化数据成员以便从一个组件传输到另一个组件。该文档讨论了如何使用类版 native 制来 unserialize both older and newer versions of a class .

我的用例略有不同。在某些情况下,较新版本的代码会将对象发送到较旧版本。旧版本没有新定义,因此它无法使用该机制读取新版本。相反,我想以编程方式设置 Boost 类版本并在连接到旧客户端时生成该类的旧版本。问题是版本似乎在编译时设置为静态常量。

我能否使用 Boost 提供的工具完成此操作,还是必须将我自己的版本信息添加到类的每个实例中?

最佳答案

没有办法动态影响 Boost.Serialization 使用的类型版本,因为它是一个编译时间常量(如您所述)。您将需要添加自己的版本控制方案来处理这种特殊情况。

关于c++ - boost 序列化: how to choose version at runtime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5705797/

相关文章:

scala - 从Serializable Scala对象调用Hadoop FileSystem操作的最佳方法是什么

java - Jackson UpperCamelCase - 不将单个单词属性大写

java - 使用序列化查找 Java 对象大小

c++ - 当调用具有等待条件变量的线程对象的析构函数时会发生什么?

c++ - 如何在 CPU 负载为 100% 时保持 UI 响应(主要使用 C++ 和 Qt)?

C++:使用模板和 boost::bind 的链接器问题

c++ - 如何为 unsigned char 类型编译 boost::spirit ?

multithreading - 在 Linux SMP 上 boost 线程和不存在的 boost

c++ - 如何将 std::vector 的某些元素移动到 vector 中的新索引?

c++ - 如何确定特定驱动器的类型?