Boost-serialization:如何在不加载的情况下检索存档中的类版本?

时间:2013-10-18 12:03:37

标签: serialization boost boost-serialization

我的问题是关于程序回滚和存档兼容性的管理: 假设我在版本10中保存了类型为T的对象=> archive.txt。 如果我将我的程序回滚到以前的版本(假设为5),我想检查(不试图反序列化性能问题)如果1.30中的T与archive.txt中保存的对象具有相同的“BOOST_CLASS_VERSION”。

简而言之:有没有办法检索存档中存储的T的BOOST_CLASS_VERSION?

我读了加强代码,但我没有找到“非常直接”的方法来做到这一点。 看来我必须得到basic_iarchive_impl的cobject_id_vector,但所有这些都是私有的。 他们是另一种非侵入性的方式吗? (通过非侵入式我的意思是:只使用boost public stuff,或者至少使用简单的继承来获取基类的受保护成员?)。

提前致谢。

1 个答案:

答案 0 :(得分:2)

好吧,也许我的问题太快了:在提升邮件列表上,他们回答说:没有。 但即使有可能,处理回滚和兼容性也不是一种可持续的方式。

事实上,即使我的班级T在程序版本上保持不变,也许T会员U会改变:所以我必须检查所有成员及其成员......版本:arf !!

最后,我们使用每个版本的程序编译的程序(“compatibility_checker”)处理问题:其目的是尝试加载存档,以检查兼容性。有时它很长,但至少,它很容易:当我从10回滚到5时,我检查是否可以在“compatibility_checker”V5中加载在版本10中创建的存档,它告诉我是否可以执行回滚那些数据。

相关问题