我想序列化的数据结构大多是对象列表。一个对象可能有一个指向另一个的指针。 串行化失败,指针冲突。 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来查找对象地址(然后将它自己对象),然后构建它们之间的映射。我之前在我的项目中做过这种映射,并且运行良好。 –