代码之家  ›  专栏  ›  技术社区  ›  Pieter

静态成员和增强序列化

  •  7
  • Pieter  · 技术社区  · 15 年前

    我在用 Boost.Serialization 存档类的内容。成员变量之一是静态的STD::向量。

    归档和恢复工作进行得很顺利,但我希望库只保存一次静态成员,从文件大小来看,每个归档实例的静态成员似乎都已完全保存。

    通过对静态向量使用set/getter并将静态向量序列化一次,可以很容易地避免这种情况。

    但我宁愿有一个独立的班级。是否有一种简单明了的方法来实现只存档一次类的静态内容?

    2 回复  |  直到 15 年前
        1
  •  2
  •   arul    15 年前

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

    如果按如下方式序列化向量:

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

    当然,静态向量会随每个实例序列化。

    如果您需要进一步的澄清,请将您的 serialize 函数和调用它的函数。

        2
  •  1
  •   Éric Malenfant    15 年前

    我在boost.serialization方面的经验非常有限,因此请考虑以下相应内容:

    iirc,你想要的静态成员的处理方法就是指针。因此,序列化指向静态成员的指针可能会起作用。

    自我批评:不过,我不确定在反序列化时如何应用。