我正在使用Boost.Serialization来存档类的内容。其中一个成员变量是静态std :: vector。
存档和恢复很顺利,但我有点希望图书馆只保存静态成员一次,看来,从文件大小来看,静态成员已经为每个存档实例完全保存。
通过对静态向量使用set / getters并在类外部序列化静态向量,可以轻松避免这种情况。
但我宁愿拥有一个自给自足的课程。是否有一种干净简单的方法来实现仅对类的静态内容进行一次归档?
答案 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,你想要的静态成员的治疗是用指针完成的。因此,序列化指向静态成员的指针可能会起作用。
自我评论:我不确定在反序列化时如何应用它。