我正在构建一个可以包含任意类型对(键,值)的数据结构,它将通过基指针存储和序列化。该数据结构将在网络中的对等体之间使用,并且我不能保证接收端上存在所有类型对。 Boost可以很好地序列化一个集合,但如果一个条目无法序列化,它将抛出一个异常,反序列化将中止。在我的情况下,这被认为是正常的,应该丢弃该条目,并且应该继续进行反序列化。
如果集合中的条目失败,有什么解决方案可以继续反序列化?
答案 0 :(得分:0)
存在的解决方案是/ versioning /
serialize
接口将未签名的version
号码传递给您的类的反序列化方法,这样您就可以决定如果您的客户端恰好是旧版本的处理方式(即不知道一些)类型)或更新(即了解几种类型)。
如果您正在使用普通的多态容器,那么您将需要进行手动序列化,以某种方式对每个元素的版本信息进行编码,以便客户端能够在“崩溃”之前跳过该元素