序列化库Cereal使用注意事项

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24634505/article/details/89534314
  • 需要人工保证读写的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

猜你喜欢

转载自blog.csdn.net/qq_24634505/article/details/89534314