免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3331 | 回复: 1
打印 上一主题 下一主题

[求解]boost::serialization class version exception [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-26 20:34 |只看该作者 |倒序浏览

  1. #include <boost/archive/text_oarchive.hpp>
  2. #include <boost/archive/text_iarchive.hpp>
  3. #include <fstream>

  4. struct wxPoint {
  5.     int x;
  6.     int y;
  7. };
  8. namespace boost {
  9.     namespace serialization {
  10.         template<class Archive>
  11.           void serialize(Archive &ar, wxPoint p, unsigned int version){
  12.               ar & p.x;
  13.               ar & p.y;
  14.           }
  15.     }
  16. }
  17. struct MyData {
  18.     wxPoint p;
  19.     friend class boost::serialization::access;
  20.     template<class Archive>
  21.     void serialize(Archive &ar, unsigned int version){
  22.         ar & p;
  23.     }
  24. };
  25. inline void DataSaveTo(const char *filename, MyData data) {
  26.     std::ofstream ofs(filename);
  27.     boost::archive::text_oarchive ar(ofs);
  28.     ar << data;
  29. }

  30. inline void DataLoadFrom(const char *filename, MyData data) {
  31.     std::ifstream ifs(filename);
  32.     boost::archive::text_iarchive ar(ifs);
  33.     ar >> data;
  34. }
  35. int main(int argc, char **argv)
  36. {
  37.   if(argc > 1) {
  38.       MyData d;
  39.       DataSaveTo("test.txt", d);
  40.   } else {
  41.       MyData d;
  42.       DataLoadFrom("test.txt", d);
  43.   }
  44. }
复制代码
其中wxPoint 要用非侵入式的写法,  因为实际这个结构是wxWidgets里的。。

但读取的时候会出现。

terminate called after throwing an instance of 'boost::archive::archive_exception'
  what():  class version
Aborted


class version 好像是类版本不同时向后兼容使用的一个参数。。
为什么我这里会出现这个问题呢?

谢谢

论坛徽章:
0
2 [报告]
发表于 2010-12-27 22:23 |只看该作者
花了快一天时间 总算解决了。。。
不知道该哭还是笑。。
应该是我linux下boost库的serialization有bug;

无意中用 mingw 编译 结果正常。。
于是 pacman -S boost 之后  一切正常。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP