boost::serialization
способен сериализовать мои полиморфные объекты их самого производного класса, даже если эти объекты указываются ссылкой/указателем на базовый класс. Это не требует виртуальных функций.Как работает boost :: serialization Archive :: register_type?
Для этого boost::serialization
требует знать о существующих полиморфных типах: Archive::register_type
необходимо называть объект Archive
, используемый для сериализации.
This example показывает, как регистрировать типы и как их сериализовать.
Мне интересно, как это достигается.
Я попытался посмотреть исходный код boost::serialization
, но не смог: я не так хорош с метапрограммированием шаблонов.
Да, я догадался, что RTTI были использованы, но как это делает register_type? – peoro 2010-12-02 16:55:10