2014-11-17 5 views
1

의 구성원이 아니기 때문에 Visual Studio 2003에서 2013 년까지 회사 소프트웨어 일부를 업데이트하려고합니다. 다른 위치에서 이식해야하는 많은 라이브러리를 사용하지만 모든 부스트 복사를 돌보고 C++ 추가 include 디렉토리에 추가 한 후에도 여전히 다음과 같은 오류가 발생합니다.포트 프로젝트 VS2003 -> VS2013 오류 C2039 serialize가 hash_Map

오류 C2039 " '직렬화가' :의 구성원이 아닌 'stdext :: hash_map 키, 데이터, Hash_Traits, 표준 : : 할당>'

이 오류는 부스트에서 access.hpp 발생/직렬화.

인해 지적 재산권 것들, 내가 실제로 내 코드 중 하나를 포함 할 수 없습니다, 그러나 어떤 도움을 크게 감상 할 수있다.

감사

답변

0

사용자 정의 포인트를 구현하여 컨테이너 클래스를 직렬화 가능하게해야합니다.

난 당신 (때문에 당신이해야) 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 참조)