C++ Cereal передает дополнительные данные во время десериализации
Поэтому я недавно начал использовать библиотеку CEREAL для небольшого личного проекта. Однако одна из проблем, с которыми я столкнулся, заключается в том, что во время десериализации у файла XML, который я десериализую, есть дополнительные файлы в том же каталоге, которые являются зависимостями для сериализованного XML. Это проблематично, потому что я не могу найти способ добавить дополнительные параметры в функцию десериализации. Поэтому, в основном, когда я создаю входной поток с чем-то вроде "some/deep/example.xml", у меня нет возможности передать путь к десериализованным вложенным объектам. Теперь вы можете создать дополнительную функцию, которую вы вручную вызываете для десериализованного объекта после его загрузки, но если вы хотите нацеливаться на сильно вложенные объекты, такие как я, это становится очень неудобным.
Итак, мой вопрос, нет ли способа сделать что-то вроде следующего:
{
// load
std::ifstream is("some/deep/path/example.xml");
//add some user data here for example:
UserData ud("some/deep/path/", etc...); //path is passed so other files can be loaded up in the objects that are being deserialized.
cereal::XMLInputArchive archive(is, ud); //<- ud is passed to the deserializer
ComplexObject co;
//during the deserialize, make the "ud" accessible in the "archive" methods required to be implemented by Cereal
archive(co);
}