将代码更改为不使用boost中的命名空间


namespace boost { namespace serialization {
template<class Archive>
void save(Archive & ar, const my_class & t, unsigned int version)
{
....
}
template<class Archive>
void load(Archive & ar, my_class & t, unsigned int version)
{
....
}
}}

我需要在类中使用此代码,但由于名称空间的原因,我遇到了错误。有什么帮助吗?从文档中:https://www.boost.org/doc/libs/1_47_0/libs/serialization/doc/serialization.html#splittingfreefunctions

提前感谢!

您混淆了侵入序列化(成员函数(和非侵入序列化(自由函数(。

您发布的coffee是用于免费函数的(例如,当您无法向类添加序列化代码时可以使用它(它可能来自第三方标头(。

在类定义中,您应该采用成员函数方法:https://www.boost.org/doc/libs/1_72_0/libs/serialization/doc/serialization.html#member

如果您还需要拆分保存/加载函数,也可以将其作为成员函数:https://www.boost.org/doc/libs/1_72_0/libs/serialization/doc/serialization.html#splittingmemberfunctions

答案是将整个命名空间放在类之外。

最新更新