我有两种类型的多态类型:
class Base1 {...};
class Base2 {...};
class Derived1 : public Base1 {...};
class Derived : public Derived1, public Base2 {};
我用
BOOST_CLASS_EXPORT_KEY(Derived)
用于派生的序列化头文件中的。和
BOOST_CLASS_EXPORT_IMPLEMENT(Derived)
用于实现Derived的序列化自由函数的翻译单元,它简单地为两个碱基调用base_object。我为None of Base1,Base2,Derived1做了这个。 我只实例化了boost :: mpi所需的归档的序列化函数。 所有这些都在一个链接的共享对象中,以生成可执行文件。
使用Base1 *指针时保存到存档失败。
调试时,我在
中看到boost/archive/detail/oserializer.hpp
在第393行附近,派生类型已正确注册,但稍后会在411处抛出异常
"the base/derived relationship hasn't be registered"
,异常显示类型
Derived
和
Base1
如何注册关系本身?
答案 0 :(得分:0)
道歉,我实际上错过了在Derived1的序列化实现中调用base_object。
现在它就像一个魅力,