正如在问题标题中一样 - 我需要序列化指向每个其他的复杂数据结构网络,并由可能没有默认构造函数的类表示。这些类通常有一个指针向量或对向量。
我认为简单地分配 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);
}
}