Boost:如何在缺少类型时通过基指针序列化/反序列化泛型类型集合?

时间:2014-02-12 08:16:29

标签: c++ boost

我正在构建一个可以包含任意类型对(键,值)的数据结构,它将通过基指针存储和序列化。该数据结构将在网络中的对等体之间使用,并且我不能保证接收端上存在所有类型对。 Boost可以很好地序列化一个集合,但如果一个条目无法序列化,它将抛出一个异常,反序列化将中止。在我的情况下,这被认为是正常的,应该丢弃该条目,并且应该继续进行反序列化。

如果集合中的条目失败,有什么解决方案可以继续反序列化?

1 个答案:

答案 0 :(得分:0)

存在的解决方案是/ versioning /

serialize接口将未签名的version号码传递给您的类的反序列化方法,这样您就可以决定如果您的客户端恰好是旧版本的处理方式(即不知道一些)类型)或更新(即了解几种类型)。

如果您正在使用普通的多态容器,那么您将需要进行手动序列化,以某种方式对每个元素的版本信息进行编码,以便客户端能够在“崩溃”之前跳过该元素