Задать вопрос
Dyikot
@Dyikot

Как можно через ООП сериализировать в разные форматы в едином стиле?

Сейчас использую подход свободных функий + ADL:
void to_json(json& j, const MyObject& o);
void from_json(const json& j, MyObject& o);

void to_binary(binary_buffer& b, const MyObject& o);
void from_binary(const binary_buffer& b, MyObject& o);

Мне в принципе такой подход нравится, но требование сделать на ООП. Смотрю в сторону шаблона "Посетитель". Что можете посоветовать?
  • Вопрос задан
  • 22 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик на C++
    12 месяцев
    Далее
  • Академия Эдюсон
    Разработчик игр на Unreal Engine + ИИ
    9 месяцев
    Далее
  • Stepik
    Профессия: Разработчик C++ (Junior)
    2 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
а точно нужен Visitor? он нужен для double dispatch: иерархия классов и для каждого вида своя логика. У тебя один MyObject, наследников не видно, это как из пушки по воробьям. Проще держать полиморфизм на стороне формата: интерфейс ISerializer с виртуальными write() под каждый тип поля, а у MyObject — void serialize(ISerializer&) const и void deserialize(IDeserializer&). JSON и binary тогда просто разные реализации этих интерфейсов, без accept()/visit() зоопарка. Visitor понадобится только если появится реальная иерархия объектов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы