我正在使用Boost.Serialization对类的内容进行归档。其中一个成员变量是静态std::vector。
归档和恢复很好,但我希望库只保存一次静态成员,从文件大小来看,每个归档实例的静态成员都是完全保存的。
通过对静态向量使用set/getter并在类外部序列化一次静态向量,可以很容易地绕过这一点。
但我更希望有一个独立的类。有没有一种简单明了的方法来实现一个类的静态内容只归档一次?
发布于 2009-03-20 14:20:02
在序列化所有类的实例之前序列化静态向量。
如果像这样序列化向量:
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & this->someVar;
ar & this->AnotherVar;
ar & staticVector;
}那么可以肯定的是,静态向量确实会被每个实例序列化。
如果您需要进一步的说明,请发布您的serialize函数和调用它的函数。
发布于 2009-03-20 17:46:30
我使用Boost.Serialization的经验非常有限,因此请相应地考虑以下内容:
IIRC,对静态成员的处理是对指针的处理。因此,序列化指向静态成员的指针可能会起作用。
Self-critique:我不确定如何在反序列化时应用它。
https://stackoverflow.com/questions/666205
复制相似问题