C++ Boost.Serialization - 用户定义成员的非侵入式序列化
C++ Boost.Serialization - Non intrusive serialization of user-defined members?
我有一个类结构,如下所示
class MemberClass;
class ContainerClass {
MemberClass special_member;
int other_members;
};
按照 http://www.boost.org/doc/libs/1_66_0/libs/serialization/doc/中的示例进行操作我想编写一个非侵入式序列化:
template<class Archive>
void serialize(Archive & ar, ContainerClass & c, const unsigned int version)
{
ar & c.other_members; // easy - built-in type
serialize(ar, c.special_member, version); //???
}
假设他们的也是非侵入性的
void serialize(Archive & ar, MemberClass & m, const unsigned int version);
这可以编译和工作,但我觉得这不是这样做的方法,因为它重用了成员类的容器类的版本号?
那么如何处理呢?容器类是否必须单独管理其成员的版本?
答案是写作
template<class Archive>
void serialize(Archive & ar, ContainerClass & c, const unsigned int version)
{
ar & c.other_members;
ar & c.special_member;
}
即使我们只有非侵入式版本的
void serialize(Archive & ar, MemberClass & m, const unsigned int version);
我不知道这一点。
切勿显式调用外部序列化函数。
相关文章:
- 如何在C++中序列化结构数据
- 为什么在C++中首先初始化成员类
- 提升 - 类没有名为"序列化"的成员(抽象类)?
- 使用 Boost::Serialization 序列化具有 std::mt19937_64 成员的类
- 使用 Boost 对具有 const 成员的类进行序列化
- 使用<string>提升::序列化序列化具有 vector<unique_ptr> 成员的类
- C++ Boost.Serialization - 用户定义成员的非侵入式序列化
- 使用构造函数作为成员函数的 C++(用于序列化)
- 序列化具有不同成员 MFC c++ 的继承类
- 如何将序列化方法添加到作为Windows数据结构的类成员中,以便在C++中与boost序列化一起使用
- 在使用 boost::序列化时,是否应该序列化没有成员变量的基本对象
- 端口项目 VS2003 -> VS2013 错误 C2039 序列化不是hash_Map的成员
- C/C++:序列化方法应该是类成员吗
- 跟踪何时为增强序列化添加数据成员
- 增强引用成员抽象类的序列化
- Boost序列化:在反序列化时更新成员
- 具有boost::shared_ptr类型成员的std::map的序列化失败
- 增强类序列化,更改成员类型
- 使用自定义类的Qlist作为成员序列化类(使用QDataStream)
- 获取用于非侵入性提升序列化C++的私有数据成员