пытаясь обновить часть программного обеспечения моей компании с Visual Studio 2003 до 2013. Мы используем много библиотек, которые должны были быть трансплантированы из другого места, но после того, как я позаботился обо всем ускоренном копировании и добавив его в C ++ дополнительные каталоги включения, я по-прежнему получаю следующую ошибку.
ошибка C2039 «serialize»: не является членом ключа stdext :: hash_map, данных, Hash_Traits, std :: allocator> ‘
Эта ошибка возникает в access.hpp в boost / serialization.
Из-за интеллектуальной собственности я не могу включить ни один из своего кода, но любая помощь будет принята с благодарностью.
Спасибо
Вы должны сделать ваш контейнерный сериализуемый класс, реализуя точки настройки.
Я собираюсь предположить, что вы обновитесь до std::unordered_map
(потому что вы должны), а затем вы можете следовать коду, который я написал здесь: Ошибка C ++ Boost.Serialization для hash_map с пользовательскими объектами в качестве ключа
Обратите внимание, я определяю сериализацию для
std::unordered_map
так что вам больше не нужно использовать устаревшие расширения библиотеки 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);
}
} }