【发布时间】:2014-11-21 14:33:03
【问题描述】:
如何序列化包含boost::optional 的类(使用boost::serialization)?
即下面的代码在实例化的时候会报错。
error C2039: 'serialize' : is not a member of 'boost::optional' C:\boost\boost_1_55_0\boost\serialization\access.hpp 118
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
class MyClass {
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & my_member;
}
boost::optional<int> my_member;
};
int main() {
std::ofstream ofs("filename.txt");
const MyClass g;
boost::archive::text_oarchive oa(ofs);
oa << g;
return 0;
}
我知道可能涉及更深层次的问题(当值不存在时,您应该向文件写入什么?),但必须有一些标准解决方案。我正在寻找最简单的方法来解决这个问题。
【问题讨论】:
-
boost.org/doc/libs/1_56_0/boost/serialization/optional.hpp 然后你可以考虑实现一些适合 std
optional的东西。
标签: c++ c++11 serialization boost optional