c++ - 将 Boost 与 getter 和 setter 结合使用?

标签 c++ boost

我想序列化一个我没有写访问权限的类。即,我无法更改源文件或头文件。此外,大多数字段都是私有(private)的,可以通过 getter 和 setter 函数访问。

谁能告诉我创建不同的保存和加载函数是否是一个好主意(或不是)(如 boost tutorial 中所述)...

template<class Archive>
void save(Archive & ar, gps_position &g, const unsigned int version) const
{
    // note, version is always the latest when saving
    ar  & g.deg;
    ar  & g.min;
}
template<class Archive>
void load(Archive & ar, gps_position &g, const unsigned int version)
{
    if(version > 0)
        ar & g.deg;
        ar & g.min;
}
BOOST_SERIALIZATION_SPLIT_MEMBER()

...并使用公共(public)函数:

ar & g.getDeg();

而不是

ar & g.deg;

(类似于 setter )??我对 C++ 和序列化非常陌生,非常感谢任何提示!

最好,亚历克斯

编辑:添加了 boost 教程的链接

最佳答案

template<class Archive>
void load(Archive & ar, gps_position &g, const unsigned int version)
{
    if(version > 0)
    {
        int d = 0;
        ar & d;
        g.setDeg(d);
        int m = 0;
        ar & m;
        g.setMin(m);
    }
}

类似这样的事情。声明变量 -> 从存档中读取 -> 通过调用 setter 函数设置为成员。

关于c++ - 将 Boost 与 getter 和 setter 结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11886368/

相关文章:

c++ - Windows XP 下 CAtlStringMgr::GetInstance 崩溃

c++ - 如何将一个方法中的值返回给同一个类的另一个方法

c++ - 我无法在 Qt 5.5 中的 Qt 类之外使用 tr()

c++ - 将 Int 转换为 Char 数组

c++ - 具有继承属性的 Boost Spirit 解析器 - 简单示例无法编译

c++ - 向 Boost unordered_map 添加一个元素

c++ - 如何将元素移动到 vector 的末尾?

c++ - 如何为 boost::serialization 指定 nvp 包装器?

c++ - boost 序列化多个对象

c++ - error LNK2019: 未解析的外部符号“public: __thiscall Server::Server(class boost::asio::io_service &)