gpt4 book ai didi

c++ - 使用指针促进序列化

转载 作者:行者123 更新时间:2023-11-28 05:38:15 24 4
gpt4 key购买 nike

我想序列化的数据结构主要是一个对象列表。一个对象可能有一个指向另一个的指针。然后序列化因指针冲突而失败。 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*>因为 boost 然后可以在任何地方创建元素,但是,这是非常具有侵入性的。另一个想法是确保首先创建所有对象,然后再创建指针。但我怎样才能做到这一点?还有其他选择吗?

最佳答案

您可以执行以下操作:1) 在对象中定义一个ID2) 序列化类时,使用指针的 ID3)所有数据完成后,循环所有对象使ID指向实际指针

如果这只是一个vector,那你在做serial和deserial的时候可以忽略Object pointer,因为你知道它是连续链接的,所以de的时候很容易连续re-link - 通过将前一个对象的临时指针链接到当前对象来串行。

关于c++ - 使用指针促进序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37747596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com