我们可以将不同类中的主序列化方法分开,以便使用c ++的boost库更容易,更简单吗?

时间:2014-03-24 07:10:00

标签: c++ boost encapsulation

如何将serialize方法与此代码分开并将其封装到另一个类中,这样我们就不必在我们创建的每个类中编写它。

class Test  
{  
private:      
    friend class boost::serialization::access;  
   template<class Archive> void serialize(Archive & ar,  
            const unsigned int version)   
    {  
        ar & BOOST_SERIALIZATION_NVP(a);  
        ar & BOOST_SERIALIZATION_NVP(b);  
        ar & BOOST_SERIALIZATION_NVP(emp); 
    }  

    int a; 
    int b; 
    Employee *emp; 
public:  
    Test(int a, int b,int c, int d)  
    { 
         this->a = a; 
         this->b = b; 
        emp = new Employee(c,d); 
    }  
}; 

1 个答案:

答案 0 :(得分:0)

docs中所述,您可以使用自由函数来序列化类。当然,这需要数据成员公开。

对于&#34;真实&#34;隐藏数据的类可以定义一个&#34;序列化结构&#34;为了序列化的目的,它被传入和传出真正的类。