序列化库Cereal使用注意事项

  • 需要人工保证读写的archive版本相对应。

  • 二进制存档可以通过包含<cereal/archives/二进制.hpp>来使用,二进制归档不尝试确保在不同的体系结构之间保持endianness。如果您的数据将在小端和大端机器上读取,您应该使用<cereal/archives/portable_binary。hpp>,它跟踪保存和加载机器的endianness,并适当地转换数据。它的开销略高于常规的二进制存档。记住在构造流时指定二进制标志(std::ios::binary)。

  • 在序列化每种类型之前和之后立即调用特殊函数,称为prologue and epilogue。

  • 没有默认构造函数的类用loadAndConstruct

  • 序列化函数:可以是类内部函数也可以是外部函数。既可以使用单独的序列化函数,也可以分开使用load和save或load_minimal和save_minimal对(例如,在加载类时动态分配内存),无需显示的告诉cereal,但是需要只使用其中一种。

    • 注:save函数是const的
    • 如果需要把serialize函数写成protected或者private,需要声明友元friend class cereal::access;,并包含头文件#include <cereal/access.hpp>
      template
      void serialize(Archive & archive)//, const std::uint32_t /* version */); template
      {
      archive(mtl_file_name);
      archive(mat4);
      }
  • 所有的STL类型都要相应的加上cereal/types/xxx.hpp的头文件,基础类型用cereal/types/base_class.hpp

  • static成员要加details/static_object.hpp

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值