对具有私有数据的类进行Boost序列化

Boost Serialization of classes with private data

本文关键字:Boost 序列化 数据      更新时间:2023-10-16

是否可以使用Boost序列化库使用私有数据但使用公共获取/设置方法对类进行非侵入性序列化。如果没有,是否有其他库能够做到这一点?Thnaks

如果必须的话,您可以取消序列化/串行化到临时变量(存档不会神奇地知道串行化到的变量是类的字段)。调整教程中的串行化功能,假设无法直接访问数据:

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);
}