1
我有3個類(「領導」,「研究人員」,「工人」),它們都來自基類「團隊」。序列化包含指針向量的對象向量
我有一個類「Project」,其中包含指向不同團隊的指針向量。
我用下面所有的標題,在這個秩序,我所有的類聲明:
#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;
在問卷調查類的序列化的嘗試。
在哪一行,你特別得到異常? – Sankalp
http://www.boost.org/doc/libs/1_54_0/libs/serialization/doc/serialization.html#registration –
@Sankalp:在'問卷調查**類的序列化嘗試中''ar&teams;'。 –