C++ C++;Boost-包含类层次结构对象的类的序列化
我有一个类C++ C++;Boost-包含类层次结构对象的类的序列化,c++,serialization,boost,C++,Serialization,Boost,我有一个类a,它包含类B的对象,我想序列化它。问题是,类C继承自B,因此A可以包含B或C的对象。如何使用Boost有效地实现序列化 下面是我的尝试,但我在尝试使用C对象序列化A时遇到了错误,而使用B它工作正常。你知道吗,我做错了什么 我找到了一些关于类层次结构对象序列化的信息,但是它需要在text\u iarchive中显式注册类型,而我需要在A类中注册它,因为我没有直接序列化B对象 我的尝试: 这表明您错过了派生类的BOOST\u CLASS\u EXPORT,即 BOOST_CLASS_E
a
,它包含类B
的对象,我想序列化它。问题是,类C
继承自B
,因此A
可以包含B
或C
的对象。如何使用Boost有效地实现序列化
下面是我的尝试,但我在尝试使用C
对象序列化A
时遇到了错误,而使用B
它工作正常。你知道吗,我做错了什么
我找到了一些关于类层次结构对象序列化的信息,但是它需要在text\u iarchive
中显式注册类型,而我需要在A
类中注册它,因为我没有直接序列化B
对象
我的尝试:
这表明您错过了派生类的
BOOST\u CLASS\u EXPORT
,即
BOOST_CLASS_EXPORT(C)
没有此宏,Boost序列化无法正确序列化指向派生对象的指针
你可以找到完整的工作代码可能在@leiyc中得到解决。不是的,你发布的问题是关于抽象类的,但是我的
B
类是可实例化的。这个怎么样@Eenoku,在米拉达姆的暗示下工作。请你写一个完整的答案,这样我就可以接受了?
a:
4
1
2
3
a2:
4
1
2
3
a3:
6
1
2
3
2
terminate called after throwing an instance of 'boost::archive::archive_exception'
what(): unregistered class - derived class not registered or exported
Signal: SIGABRT (Aborted)
BOOST_CLASS_EXPORT(C)