I want to serialize a hash map to a file and de-serialize it later on.
#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;
}
Но я получаю сообщение об ошибке, как -Serialize stdext :: hash_map используя подталкивание сериализации библиотека
error C2039: 'serialize' : is not a member of 'stdext::hash_map<_Kty,_Ty>'
Я искал в Интернете за эту ошибку, но не получил большую помощь. Кроме того, я проверил в моей версии установки установки/hash_map.hpp имеет функцию serialize(). Тот же код работал для сериализации std::deque
. Может ли кто-нибудь сказать мне, как мне изменить его, чтобы он скомпилировался?
Не совсем то, что вы хотите, но Google Sparsehash карты библиотеки приходят с некоторыми встроенная поддержка сериализации , хотя полностью отделен от сериализации Boost. – doublep
http://stackoverflow.com/questions/23764249/c-boost-serialization-error-for-hash-map-with-custom-objects-as-key/23768271#23768271 – sehe