повысить сериализацию нативного типа, определенного с помощью 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

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

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

Похожие вопросы
Добавить ответ
Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Нажимая кнопку «Отправить», я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности этого сайта.