相关文章推荐
干练的稀饭  ·  說話沒重點,用字格格不入?專家剖析三大原因改 ...·  2 周前    · 
不爱学习的红薯  ·  itboon/linux-20: ...·  3 周前    · 
安静的八宝粥  ·  細味商品- 細味公平FAIRTASTE·  1 月前    · 
温暖的遥控器  ·  奇妙清单Wunderlist - ...·  8 月前    · 
瘦瘦的棒棒糖  ·  中国耻辱事件之一:93年银河号事件|公海|军 ...·  1 年前    · 
小百科  ›  如何使用std::shared_ptr进行boost::序列化工作?开发者社区
坚强的蘑菇
1 年前
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
提问

问 如何使用std::shared_ptr进行boost::序列化工作?

Stack Overflow用户
提问于 2013-09-28 06:49:41
EN

这个问题一直是 asked here 和其他一些地方,但答案似乎并没有真正解决最新的Boost库。

为了说明这个问题,假设我们要序列化一个包含共享指针( std::shared_ptr )的类,以及一个静态 load 函数,它将从一个文件构建这个类,以及一个将实例存储到一个文件中的 save 函数:

代码语言: javascript
复制
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/serialization/shared_ptr.hpp>
#include <fstream>
#include <memory>
#include <vector>
class A
public:
    std::shared_ptr<int> v;
    void A::Save(char * const filename);
    static A * const Load(char * const filename);
        //////////////////////////////////
        // Boost Serialization:
    private:
        friend class boost::serialization::access;
        template<class Archive> void serialize(Archive & ar, const unsigned int file_version) 
            ar & v;
// save the world to a file:
void A::Save(char * const filename)
    // create and open a character archive for output
    std::ofstream ofs(filename);
    // save data to archive
        boost::archive::text_oarchive oa(ofs);
        // write the pointer to file
        oa << this;
// load world from file
A * const A::Load(char * const filename)
    A * a;
    // create and open an archive for input
    std::ifstream ifs(filename);
    boost::archive::text_iarchive ia(ifs);
    // read class pointer from archive
    ia >> a;
    return a;
 
推荐文章
干练的稀饭  ·  說話沒重點,用字格格不入?專家剖析三大原因改善表達能力| 台灣 ...
2 周前
不爱学习的红薯  ·  itboon/linux-20: Linux 入门书籍,适用于「Debian/Ubuntu ... - GitHub
3 周前
安静的八宝粥  ·  細味商品- 細味公平FAIRTASTE
1 月前
温暖的遥控器  ·  奇妙清单Wunderlist - 简洁雅致免费跨平台同步GTD工具(Todo/记事 ...
8 月前
瘦瘦的棒棒糖  ·  中国耻辱事件之一:93年银河号事件|公海|军舰|美国|货轮|银河_手机 ...
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号