因此,我最近开始将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);
}