повысить сериализацию нативного типа, определенного с помощью typedef, содержащегося в структуре

У меня есть заголовочный файл 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

Решение

Карты, строки и т. Д. Можно просто сериализовать, включив соответствующий заголовок:

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

Перечисление считается примитивным типом:

Тип T является Сериализуемым тогда и только тогда, когда выполняется одно из следующих условий:

  • это примитивный тип.

    Под примитивным типом мы подразумеваем встроенный тип C ++ и ТОЛЬКО встроенный тип C ++. Арифметика (включая символы), bool, enum — это примитивные типы. Ниже в чертах сериализации мы определяем «примитивный» уровень реализации другим способом для другой цели. Это может быть источником путаницы.

  • Это тип класса, и одно из следующего было объявлено в соответствии с прототипами, описанными ниже:
    • функция-член класса сериализуется
    • глобальная функция сериализации
  • это указатель на сериализуемый тип.
  • это ссылка на сериализуемый тип.
  • это собственный массив C ++ типа Serializable.

Для более сложных случаев есть BOOST_STRONG_TYPEDEF (увидеть документация «Сериализация упаковщиков»)

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector