首页 > 解决方案 > 将代码更改为不使用 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

提前致谢!

标签: boostnamespaces

解决方案


您将侵入式序列化(成员函数)与非侵入式(自由函数)混淆了。

您发布的咖啡是免费功能(例如,当您无法将序列化代码添加到类时(它可能来自第三方标头),可以使用它。

在类定义中,您应该采用成员函数方法: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


推荐阅读