【发布时间】:2014-12-29 23:46:51
【问题描述】:
粗略地说,我有一个对象o 和一个指向该对象po = &o 的指针,我将其序列化如下:
// Somewhere
ar & o;
// Somewhere else, but after somewhere
ar & po;
在序列化po 时,Boost.Serialization 应该发现它已经序列化了o,而不是再次序列化*po。我有一种情况,图书馆未能发现这种情况,而是将o 序列化两次。
不幸的是,在一个简单的示例中重现此行为的所有尝试都失败了,并且原始代码太大而无法在此处发布。因此,我要求提供一个指向 Boost.Serialization 中相关代码部分的指针,而不是解决问题的方法,它跟踪地址并确定指针是否需要“深度”序列化。我希望我可以自己进行调试。
当然,任何关于错误可能是什么的最佳猜测也是受欢迎的,但我不想让你的水晶球过分紧张。 ;-)
顺便说一句,如果相关,我会使用boost::archive::text_oarchive。
【问题讨论】:
-
水晶球线 +1 :) 不,
text_oarchive不是很相关,尽管我发现xml_oarchive很适合了解跟踪参考。 -
BOOST_CLASS_TRACKING(Object, boost::serialization::track_always)是否有帮助(如果只是为了突出冲突的特征)? -
不,它没有。不过还是非常感谢您的努力!
标签: c++ serialization boost boost-serialization