我有3类(“领袖”,“研究”,“工人”),所有从基类“团队”获得。
我有一个类“项目”,其中包含指向不同球队的载体。
我使用所有的下列头,在这个秩序,我所有的类声明:
#include <sstream>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/serialization.hpp>
#include <boost/serialization/export.hpp>
#include <boost/serialization/vector.hpp>
#include <boost/serialization/version.hpp>
#include <boost/serialization/split_member.hpp>
要(反)序列我使用Team对象:
private:
friend class boost::serialization::access ;
template <typename Archive>
void serialize(Archive& ar, const unsigned int /*version*/)
{
ar & teamname ;
}
要(反)序列化的领导者,研究者,工作者对象使用:
typedef Team _super;
friend class boost::serialization::access ;
template <typename Archive>
void serialize(Archive& ar, const unsigned int /*version*/)
{
ar & boost::serialization::base_object<_super>(*this) ;
ar & contactTelephoneNumber ;
}
项目持有指向不同的团队,使用字符串一个std ::向量:
std::vector<Team *> teams ;
std::string note ;
我用在项目类序列化下面的代码:
private:
friend class boost::serialization::access ;
template <typename Archive>
void serialize(Archive& ar, const unsigned int /*version*/)
{
//ar & BOOST_SERIALIZATION_NVP(teams) ; //ERROR OCCURS HERE
ar & teams;
ar & note ;
}
并且将序列号我用的主要项目对象的矢量:
{
std::ostringstream archiveStream ;
boost::archive::text_oarchive archive(archiveStream) ;
archive << BOOST_SERIALIZATION_NVP(projects) ;
//Get serialized info as string
archivedProjects = archiveStream.str() ;
}
这一切编译罚款。 问题是在运行时。 当到达代码上面的部分,我得到以下错误:
terminate called after throwing an instance of 'boost::archive::archive_exception'
what():
unregistered class - derevided class not registered or exported"
该方案竟把:
ar & teams;
在问卷调查类的序列化的尝试。