我想序列化的數據結構大多是對象列表。一個對象可能有一個指向另一個的指針。 串行化失敗,指針衝突。 http://www.boost.org/doc/libs/1_60_0/libs/serialization/doc/exceptions.html#pointer_conflict用指針提升序列化
這裏是我的數據結構的一個小例子:(我真正的結構更復雜一些。)
struct Data
{
std::vector<Object> objects;
}
struct Object
{
std::string name;
Object *other;
}
我可以解決是改變列表元素的指針std::vector<Object*>
因爲升壓可以創建元素但是,任何地方都是非常具有侵擾性的。 另一個想法是確保首先創建所有的對象,然後是指針。但我怎麼能做到這一點?任何替代品?
你會用指針運算來計算ID嗎,比如'other - &objects [0]'?聽起來可行,但需要自定義保存和加載方法。 – SpamBot
是的,當將對象加載到新的應用程序中時,可以建立ID和內存地址之間的映射關係,而其他對象可以使用該ID來查找對象地址(然後將它自己對象),然後構建它們之間的映射。我之前在我的項目中做過這種映射,並且運行良好。 –