静态成员和boost序列化

时间:2009-03-20 13:45:15

标签: c++ serialization boost static

我正在使用Boost.Serialization来存档类的内容。其中一个成员变量是静态std :: vector。

存档和恢复很顺利,但我有点希望图书馆只保存静态成员一次,看来,从文件大小来看,静态成员已经为每个存档实例完全保存。

通过对静态向量使用set / getters并在类外部序列化静态向量,可以轻松避免这种情况。

但我宁愿拥有一个自给自足的课程。是否有一种干净简单的方法来实现仅对类的静态内容进行一次归档?

2 个答案:

答案 0 :(得分:2)

在序列化所有类实例之前序列化静态向量。

如果你像这样序列化矢量:

template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
    ar & this->someVar;
    ar & this->AnotherVar;
    ar & staticVector;  
}

然后确定,静态向量确实与每个实例一起序列化。

如果您需要进一步说明,请发布您的serialize函数及其调用函数。

答案 1 :(得分:1)

我对Boost.Serialization的经验非常有限,所以请相应考虑以下内容:

IIRC,你想要的静态成员的治疗是用指针完成的。因此,序列化指向静态成员的指针可能会起作用。

自我评论:我不确定在反序列化时如何应用它。