在不更改类的情况下使用boost序列化来序列化类

serializing classes using boost serialization without changing the class

本文关键字:序列化 boost 情况下      更新时间:2023-10-16

每次创建一个类(例如从template<class archive>ar)时都必须编写这段代码&BOOST_SERIALIZATION_NVP(b)。我们怎样才能使它简短?如何序列化STL容器?

 class Employee  
{ 
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);  
    }  
    int a; 
    int b; 
public:  
    Employee(int a, int b)  
    { 
         this->a = a; 
         this->b = b; 
    } 
}; 

我建议你从文档开始:)

  • http://www.boost.org/doc/libs/1_55_0/libs/serialization/doc/index.html(从Serializable Concept开始)

STL容器在包含相关头文件时是可序列化的:

#include <boost/serialization/map.hpp>
#include <boost/serialization/string.hpp>

许多其他的东西都是开箱即用的。

可以为已经通过其他方式(例如Fusion Sequences, Qt QObjects等)"可反射"的类型制作泛型包装器