版权声明:本文为博主原创文章,未经博主允许不得转载。 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