Предыстория
Собственно для чего такое могло бы понадобиться? Ведь C++ и так предоставляет достаточно гибкие возможности при сериализации в поток. Однако у меня стояла задача максимально универсализировать процесс сериализации/десериализации для многократного использования в проектах.
Итак, было надо организовать как можно более гибкую систему (де)сериалиации в Qt, так чтобы можно было
- либо отнаследовавшись от базового класса и расширив его
- либо имея отдельный класс-сериализатор
иметь возможность одной командой отправить поток данные из объекта.
При этом каким-либо образом должна была быть обеспечена возможность указывать какие данные в объекте подлежат сериализации, а какие можно (и нужно) «проскипать». Аналогично должна была быть выполнена возможность при десериализации правильно установить данные и связанные с ними зависимые величины внутри объекта.