我第一次看Boost.Serialization,我找不到关于虚拟菱形继承结构序列化的明确评估(或说明)。
考虑以下类层次结构:
class A { int a; }
class B1 : public virtual A { int b1; }
class B2 : public virtual A { int b2; }
class B3 : public virtual A { int b3; }
class C12 : public virtual B1, public virtual B2 { int c12; }
class C13 : public virtual B1, public virtual B3 { int c13; }
class C23 : public virtual B2, public virtual B3 { int c23; }
class D123 : public virtual C12, public virtual C13, public virtual C23 { int d123; }
使用 Boost.Serialization 在所有这些类中实现序列化的正确(希望是简单)方法是什么?
注意:没有需要序列化的指针或引用类成员。另请注意:我很乐意使用它dynamic_cast<>
来确保对该层次结构中任何类的任何指针或引用都是所需的、派生最多的类型:我只关心如何正确、干净地保证所有 BASE 类数据成员被正确序列化和反序列化,以及正在序列化的当前类。