Самоописывающая сериализация графов объектов в C++
Более 10 лет назад я создал систему сериализации для решения задачи, с которой плохо справляются JSON, protobuf и другие форматы — сохранение runtime-графов объектов с циклами, полиморфизмом и ссылками. Большинство сериализаторов работают с деревьями, но ломаются на: Циклических зависимостях Указателях между объектами Наследовании и полиморфизме Ссылках на поля других объектов Моя система умеет всё это — и даже слишком. Она полностью самоописывающаяся, сохраняет полную информацию о типах и связях, имеет бинарный формат и изоморфный ему текстовый дамп для отладки. В статье покажу: Как сериализовать графы с циклами без ручного кода Работу с полиморфизмом через TAutoPtr<BaseClass> Почему TFieldPtr (ссылки на поля объектов) оказался тупиковой идеей Что сработало, а что пришлось выбросить спустя годы Это не готовая библиотека — проект заморожен из-за проблем со временем компиляции. Но архитектурные решения и полученный опыт до сих пор актуальны для разработчиков сложных систем. Статья для тех, кто устал бороться с ограничениями стандартных сериализаторов при работе с объектными графами.
https://habr.com/ru/articles/976426/
#сериализация #разработка_игр #рефлексия #опыт #препроцессор #с++ #с++17 #cad