找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4771|回复: 0

boost serialization 注意事项[转]

[复制链接]
发表于 2008-9-20 17:37:44 | 显示全部楼层 |阅读模式
关键词boost    serialization    share_ptr                                           使用boost::serialization要注意:
1)阅读文档,没有其他地方的论述比这更好了;
2)阅读文档中<<A Very Simple Case>>要特别注意的是
             const gps_position g(35, 59, 24.567f);
这一句中的const是核心,改为
             gps_position g(35, 59, 24.567f);
是不行的,但改为
             gps_position g(35, 59, 24.567f);
             const gps_position cg=g;
             ......
             oa << cg;
是可以的;
3)要序列化shared_ptr得添加
  #include <boost/serialization/shared_ptr.hpp>
头文件(以此类推还有list等).
但更为重要的是:
若class Derive:public Base.....
typedef boost::shared_ptr<Base> BasePtr;
typedef boost::shared_ptr<Derive> DerivePtr;

BasePtr pb=DerivePtr(new Derive());
.............
ar & pb
..........
能通过编译,但不能好好儿运行。应改为

DerivePtr pd;
BasePtr pb=DerivePtr(new Derive());
.......
ar & pd;
ar & pb;
......
这里的先后次序很重要;
这就是serialization处理share_ptr多态的的问题。
尽管pd什么都没有,但很重要。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-3 06:52 , Processed in 0.019906 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表