開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服
首頁
好書
留言交流
下載APP
聯(lián)系客服
2018.09.17
class my_class{ friend class boost::serialization::access; BOOST_SERIALIZATION_SPLIT_MEMBER() template<class Archive> void save(Archive & ar, const unsigned int version) const { } template<class Archive> void load(Archive & ar, const unsigned int version) { }};
// 需要對(duì)應(yīng)的頭文件#include <boost/serialization/binary_object.hpp> // 序列化函數(shù)體內(nèi)ar & boost::serialization::make_nvp("named_binary_object", boost::serialization::binary_object(address, size));
用以將基于template的序列化函數(shù)實(shí)體寫到cpp中,而不是.h中
// 在.cpp中間中包含對(duì)應(yīng)的頭文件#include <boost/archive/polymorphic_iarchive.hpp>#include <boost/archive/polymorphic_oarchive.hpp> // 并實(shí)現(xiàn)特例化save、load模板函數(shù)template<>void my_class::save<boost::archive::polymorphic_oarchive>(boost::archive::polymorphic_oarchive & ar, const unsigned int version) const{}template<>void my_class::load<boost::archive::polymorphic_iarchive>(boost::archive::polymorphic_iarchive & ar, const unsigned int version){}
確保被導(dǎo)出的類具有(或者繼承了)虛析構(gòu)函數(shù)
// 在.cpp中包含對(duì)應(yīng)的頭文件#include <boost/archive/polymorphic_iarchive.hpp>#include <boost/archive/polymorphic_oarchive.hpp>#include <boost/serialization/base_object.hpp>#include <boost/serialization/export.hpp> BOOST_CLASS_EXPORT(my_class)
class drived_class : public base_class{ template <class Archive> void serialize(Archive & ar, const unsigned int version) { boost::serialization::void_cast_register<drived_class, base_class>(); ... }}
微信登錄中...請(qǐng)勿關(guān)閉此頁面