粗略地說,我有一個對象o
和一個指向對象po = &o
,這我序列是這樣的:調試Boost.Serialization地址跟蹤
// 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'很適合獲得一些跟蹤引用的隱藏。 – sehe 2014-11-03 10:43:09
'BOOST_CLASS_TRACKING(Object,boost :: serialization :: track_always)'help(如果只是爲了強調衝突特性)? – sehe 2014-11-03 11:06:38
不,它沒有。但是,非常感謝您的努力,無論如何! – gTcV 2014-11-03 14:03:55