【问题标题】:boost unordered_map serialization says 'serialize' missing even with appropriate includesboost unordered_map 序列化说即使有适当的包含也缺少“序列化”
【发布时间】:2016-11-25 07:04:37
【问题描述】:

我有一个带有无序映射和序列化函数的简单类:

#include <boost/unordered_map.hpp>
#include <boost/serialization/unordered_map.hpp>

class to_serialize {
  boost::unordered_map<int, int> m_map;
public:
  friend class boost::serialization::access;
  template<class Archive>
  void serialize(Archive & ar, const unsigned int) {
    ar & m_map;
  }
};

现在我尝试创建一个 ts 对象并对其进行序列化:

#include <fstream>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include "ts.cpp"

int main() {
  to_serialize ts;
  std::ofstream ofs("saved.bin");
  {
    boost::archive::binary_oarchive oa(ofs);
    oa << ts;
  }
  ofs.close();
}

编译失败,出现:

boost/serialization/access.hpp:116:9: error: 'class boost::unordered::unordered_map<int, int>' has no member named 'serialize'

我不明白我在这里缺少什么? boost/serialization/unordered_map.hpp 似乎声明并定义了无序映射的序列化函数,但我想这还不够?

【问题讨论】:

    标签: c++ serialization boost unordered-map


    【解决方案1】:

    看起来答案很简单——boost实现了STL unordered_map的序列化,但不是它自己的boost::unordered_map版本:(。

    【讨论】:

      猜你喜欢
      • 2011-05-16
      • 1970-01-01
      • 2012-08-12
      • 1970-01-01
      • 2016-01-24
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 2020-12-13
      相关资源
      最近更新 更多