Перечитал исходный пост. Делайте классы с наследованием. Базовый
класс с сериализацией (чисто виртуальная функция, например, virtual
bool write(my_stream &)=0;) и всеми методами необходимыми. Для
каждого модуля делаете свой класс и метод записи для него. Надо
подумать над оператором копирования и конструкторами. Всё это дело
в контейнер с оператором []. Какой контейнер - сложно сразу
сказать. У стандартных аллокаторы с динамической памятью и "хвост"
зависимостей. Проще свой маленький написать со статической памятью.