【发布时间】:2010-09-02 01:31:10
【问题描述】:
我想将哈希映射序列化为文件,然后再反序列化。
#include <boost/serialization/hash_map.hpp>
#include <boost/filesystem/fstream.hpp>
#include <hash_map>
class A: virtual public B {
public:
friend class boost::serialization::access;
stdext::hash_map<std::string, myClass> myClassHashTable;
template <class Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar & myClassHashTable;
}
};
void A::serializedToDisk()
{
boost::filesystem::path finalPath(SOME_CONSTANT);
// code to create boost::filesystem::ifstream ofs object
boost::archive::text_oarchive oa(ofs);
oa << myClassHashTable;
}
void A::restoreFromDisk()
{
boost::filesystem::path finalPath(SOME_CONSTANT);
// code to create boost::filesystem::ifstream ifs object
boost::archive::text_iarchive ia(ifs);
ia >> myClassHashTable;
}
但我收到一个错误 -
错误 C2039:“序列化”:不是“stdext::hash_map<_kty>”的成员
我在网上搜索了这个错误,但没有得到太多帮助。另外,我检查了我的 boost 安装 serialization/hash_map.hpp 确实有一个 serialize() 函数。相同的代码适用于std::deque 的序列化。谁能告诉我应该如何更改它以使其编译?
【问题讨论】:
-
不是你想要的,但是 Google Sparsehash 库地图带有一些内置的序列化支持,尽管与 Boost 序列化完全分开。
标签: c++ hashmap boost-serialization