사용자 정의 포인트를 구현하여 컨테이너 클래스를 직렬화 가능하게해야합니다.
난 당신 (때문에 당신이해야) std::unordered_map
로 업그레이드 가정거야 그리고 당신은 내가 여기에 쓴 코드를 따를 수 : 그래서 당신은 더 이상 필요가 없습니다 내가 std::unordered_map
에 대한 직렬화를 정의 C++ Boost.Serialization error for hash_map with custom objects as key
주 사용되지 않는 GNU/MSVC 라이브러리 확장을 사용하십시오.
#include <unordered_map>
#include <boost/serialization/collections_save_imp.hpp>
#include <boost/serialization/collections_load_imp.hpp>
#include <boost/serialization/utility.hpp>
#include <boost/serialization/split_free.hpp>
namespace boost { namespace serialization {
template<class Archive, typename... TArgs >
inline void save(Archive & ar, std::unordered_map<TArgs...> const&t, unsigned) {
boost::serialization::stl::save_collection<Archive, std::unordered_map<TArgs...> >(ar, t);
}
template<class Archive, typename... TArgs >
inline void load(Archive & ar, std::unordered_map<TArgs...> &t, unsigned) {
boost::serialization::stl::load_collection<Archive,
std::unordered_map<TArgs...>,
boost::serialization::stl::archive_input_map<
Archive, std::unordered_map<TArgs...> >,
boost::serialization::stl::no_reserve_imp<std::unordered_map<TArgs...> >
>(ar, t);
}
// split non-intrusive serialization function member into separate
// non intrusive save/load member functions
template <class Archive, typename... TArgs>
inline void serialize(Archive & ar, std::unordered_map<TArgs...> &t, unsigned file_version) {
boost::serialization::split_free(ar, t, file_version);
}
} }
(본
bug-report/patch 참조)