繁体   English   中英

端口项目VS2003-> VS2013错误C2039序列化不是hash_Map的成员

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM