使用私有数据提升类的序列化

时间:2012-02-26 15:26:00

标签: c++ serialization boost

是否可以使用Boost序列化库非侵入性地序列化具有私有数据的类,但使用公共get / set方法。如果没有,是否有其他库能够做到这一点? Thnaks

1 个答案:

答案 0 :(得分:1)

如果必须,您可以反序列化/序列化为临时变量(存档不会神奇地知道被序列化的变量是该类的字段)。调整tutorial中的序列化函数以假设无法直接访问数据:

template<class Archive>
void serialize(Archive & ar, gps_position & g, const unsigned int version)
{
    int degrees = g.getDegrees();
    int minutes = g.getMinutes();
    float seconds = g.getSeconds();

    ar & degrees;
    ar & minutes;
    ar & seconds;

    g.setDegrees(degrees);
    g.setMinutes(minutes);
    g.setSeconds(seconds);
}