У меня есть заголовочный файл 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, но я не знаю, как мне идти дальше.
Спасибо,
Карты, строки и т. Д. Можно просто сериализовать, включив соответствующий заголовок:
#include <boost/serialization/map.hpp>
#include <boost/serialization/string.hpp>
Перечисление считается примитивным типом:
Тип T является Сериализуемым тогда и только тогда, когда выполняется одно из следующих условий:
это примитивный тип.
Под примитивным типом мы подразумеваем встроенный тип C ++ и ТОЛЬКО встроенный тип C ++. Арифметика (включая символы), bool, enum — это примитивные типы. Ниже в чертах сериализации мы определяем «примитивный» уровень реализации другим способом для другой цели. Это может быть источником путаницы.
- Это тип класса, и одно из следующего было объявлено в соответствии с прототипами, описанными ниже:
- функция-член класса сериализуется
- глобальная функция сериализации
- это указатель на сериализуемый тип.
- это ссылка на сериализуемый тип.
- это собственный массив C ++ типа Serializable.
Для более сложных случаев есть BOOST_STRONG_TYPEDEF
(увидеть документация «Сериализация упаковщиков»)
Других решений пока нет …