gpt4 book ai didi

c++ - Boost::serialization - 如何序列化需要数据分配但没有默认构造函数的数据结构?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:01 26 4
gpt4 key购买 nike

如问题标题所示 - 我需要序列化指向每个其他数据结构的复杂网络,并由可能没有默认构造函数的类表示。这些类通常有一个 vector of pointers 或 vector of pairs 。

我认为简单地分配 sizeof(SomeClass) 的内存,然后用序列化例程填充它是有意义的,但这不知何故会导致与字符串相关的未初始化内存问题(resize() 失败,可能未初始化的字符串对象是不愿意工作)。示例代码如下所示:

friend class boost::serialization::access;

template<class Archive> void save(Archive & ar, const unsigned int version) const
{
int n;
ar & vec.size();
for(int i=0; i<n; i++)
{
ar & vec[i];
}
}

template<class Archive> void load(Archive & ar, const unsigned int version) const
{
int n;
ar & n;
for(int i=0; i<n; i++)
{
SomeClass* obj = (SomeClass*)::operator new(sizeof(SomeClass));
ar & *obj;
vec.push_back(*obj);
}
}

最佳答案

这在 boost::serialization 文档的以下部分中有介绍:

boost::serialization - Non-Default Constructors

基本上您需要编写自己的load_construct_datasave_construct_data

关于c++ - Boost::serialization - 如何序列化需要数据分配但没有默认构造函数的数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13912522/

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