使用boost 序列化和反序列化 hash_map 的问题,急!!!

沃尔特容易 2008-03-18 11:47:11

#include <fstream>
#include <hash_map>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/string.hpp>
#include <boost/serialization/hash_map.hpp>
#include <iostream>
using namespace std;
using namespace stdext;

class user
{
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & m_id;
}
public:
string m_id;
user(){};
user(string id):m_id(id){};
};

#define mymap hash_map<string,user>
BOOST_CLASS_TRACKING(user, boost::serialization::track_never)
BOOST_CLASS_TRACKING(mymap, boost::serialization::track_never)

class application
{
public:
void load(string filepath)
{
std::ifstream ifs((char *)(filepath.c_str()), std::ios::binary);
boost::archive::text_iarchive ia(ifs);
mymap mus;
ia >> mus;//1.如果不取消此行的注释,则会编译失败,但这行正是我需要的东西
}
void save(string filepath)
{
std::ofstream ofs((char *)(filepath.c_str()));
boost::archive::text_oarchive oa(ofs);
mymap mus;
oa << mus;//2.如果不取消此行的注释,则会编译失败,但这行正是我需要的东西
}
};

int main() {
return 0;
}


对于上面的代码,现在的问题是:
编译时
1对应的错误提示是resize不是stdext::hash_map的成员
2对应的错误提示是serialize不是hash_map的成员
请问各位高人,这段代码有什么问题?



...全文
593 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
蔷薇理想人生 2012-06-21
  • 打赏
  • 举报
回复
我也解决了,顺便说说我的结局方案吧,如果采用boost的序列化和持久化功能,持久容器对象,例如map,string,vector等,需要使用boost定义的#include <boost/serialize/map.hpp>,具体好像是这个目录
蔷薇理想人生 2012-06-20
  • 打赏
  • 举报
回复
你是咋个解决的?
沃尔特容易 2008-03-18
  • 打赏
  • 举报
回复
自己解决了,哎,每次我的帖都没人理。
沃尔特容易 2008-03-18
  • 打赏
  • 举报
回复
补充一下,
windows+vs2005的环境下,
使用最新版的boost1.34.1

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧