![](/img/trans.png)
[英]error C2039: 'serialize' : is not a member of 'std::vector<_Ty>'
[英]Port project VS2003 -> VS2013 error C2039 serialize is not a member of hash_Map
试图将我公司的某些软件从Visual Studio 2003更新到2013年。我们使用了许多必须从其他位置移植的库,但是在处理了所有的boost复制并将其添加到C ++其他include目录之后,我仍然出现以下错误。
错误C2039“'serialize':不是'stdext :: hash_map Key,Data,Hash_Traits,std :: allocator>'的成员
在boost / serialization中的access.hpp中会发生此错误。
由于知识产权的原因,我实际上不能包含任何代码,但是任何帮助将不胜感激。
谢谢
您应该通过实现定制点使容器类可序列化。
我假设您升级到std::unordered_map
(因为应该这样做),然后您可以按照我在此处编写的代码进行操作: hash_map的C ++ Boost.Serialization错误,以自定义对象为键
注意,我为
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);
}
} }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.