在前篇 
 
  
 
 
 
  
 
 
 
                
        boost::serialization 用基类指针转存派生类(错误多多,一波三折)文中我们都是使用serialize函数来实现序列化,其代码格式如下:
 private:
	friend class boost::serialization::access;
	template<typename Archive>
	void serialize(Archive& ar, const unsigned int version)
	{
		ar & BOOST_SERIALIZATION_NVP(name_);
		ar & BOOST_SERIALIZATION_VP(number_);
		ar & BOOST_SERIALIZATION_NVP(grade_);
	}
其实这个函数相当于两个函数:但我们使用xxx_oarchive时它等价于把对象数据save到文档中,
 当我们使用xxx_iachive时它等价于把数据从文档中load给对象数据。因此可以它拆分成两个函数
 save 和 load 函数。还用前面的例子。
 save函数:
 
private:
	friend class boost::serialization::access;
	template<typename Archive>
	void serialize(Archive& ar, const unsigned int version)
	{
		ar & BOOST_SERIALIZATION_NVP(name_);
		ar & BOOST_SERIALIZATION_VP(number_);
		ar & BOOST_SERIALIZATION_NVP(grade_);
	} template<typename Archive>
void save(Archive& ar, const unsigned int version) const
{
	ar << BOOST_SERIALIZATION_NVP(name_);
	ar << BOOST_SERIALIZATION_NVP(number_);
	ar << BOOST_SERIALIZATION_NVP(grade_);
}
load函数:
 
template<typename Archive>
void save(Archive& ar, const unsigned int version) const
{
	ar << BOOST_SERIALIZATION_NVP(name_);
	ar << BOOST_SERIALIZATION_NVP(number_);
	ar << BOOST_SERIALIZATION_NVP(grade_);
}
 
                   
                   
                   
                   本文详细介绍了如何将Boost.Serialization的serialize函数拆分为save和load两个独立函数,通过示例代码展示了如何使用split_member宏以及相关模板函数,以实现更灵活的数据序列化和反序列化操作。
本文详细介绍了如何将Boost.Serialization的serialize函数拆分为save和load两个独立函数,通过示例代码展示了如何使用split_member宏以及相关模板函数,以实现更灵活的数据序列化和反序列化操作。
           最低0.47元/天 解锁文章
最低0.47元/天 解锁文章
                           
                       
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   2246
					2246
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            