我想序列化一个我没有写访问权限的类。即,我无法更改源文件或头文件。此外,大多数字段都是私有(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/