peakzhang 发表于 2008-9-20 17:37:44

boost serialization 注意事项[转]

关键词: 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什么都没有,但很重要。
页: [1]
查看完整版本: boost serialization 注意事项[转]