gpt4 book ai didi

C++ Boost.Serialization - 用户定义成员的非侵入式序列化?

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:56 26 4
gpt4 key购买 nike

我有一个类似的类结构

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);

这可以编译并工作,但我觉得这不是这样做的方法,因为它为成员类重用了容器类的版本号?

那么如何处理呢? Container 类必须单独管理其成员的版本吗?

最佳答案

答案是写

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++ Boost.Serialization - 用户定义成员的非侵入式序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49113105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com