【发布时间】:2016-11-25 07:04:37
【问题描述】:
我有一个带有无序映射和序列化函数的简单类:
#include <boost/unordered_map.hpp>
#include <boost/serialization/unordered_map.hpp>
class to_serialize {
boost::unordered_map<int, int> m_map;
public:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int) {
ar & m_map;
}
};
现在我尝试创建一个 ts 对象并对其进行序列化:
#include <fstream>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include "ts.cpp"
int main() {
to_serialize ts;
std::ofstream ofs("saved.bin");
{
boost::archive::binary_oarchive oa(ofs);
oa << ts;
}
ofs.close();
}
编译失败,出现:
boost/serialization/access.hpp:116:9: error: 'class boost::unordered::unordered_map<int, int>' has no member named 'serialize'
我不明白我在这里缺少什么? boost/serialization/unordered_map.hpp 似乎声明并定义了无序映射的序列化函数,但我想这还不够?
【问题讨论】:
标签: c++ serialization boost unordered-map