我有一个MyFile.hpp头文件,其中包含各种类型和枚举。如何对给定的示例代码进行序列化/反序列化。
// MyFile.hpp
namespace A {
namespace B {
typedef std::string MyString;
typedef std::map<std::string,std::string> my_type;
typedef bool result;
struct MyTimer
{
int time;
private :
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar & time;
}
};
enum MODE
{
Sleep=1,
HybridSleep,
Hybernate
}
}
}
我需要在相应的MyFile.cpp中执行,但不知道如何继续。
谢谢,
答案 0 :(得分:3)
地图,字符串等可以通过包含相关标题来序列化:
#include <boost/serialization/map.hpp>
#include <boost/serialization/string.hpp>
当且仅当下列之一为真时,类型T才是可序列化的:
它是一种原始类型。
原始类型是指C ++内置类型,只有C ++内置类型。 算术(包括字符),bool,enum是原始类型。在序列化特征下面,我们以不同的方式为不同的目的定义“原始”实现级别。这可能是混乱的根源。
- 这是一个类类型,根据下面详述的原型声明了以下之一:
- 一个类成员函数serialize
- 全局函数序列化
- 它是一个指向Serializable类型的指针。
- 它是对Serializable类型的引用。
- 它是Serializable类型的本机C ++数组。
对于更棘手的案例,有BOOST_STRONG_TYPEDEF
(请参阅documentation "Serialization Wrappers")