更改代码以不使用来自 boost 的名称空间
Changing code to not use namespaces from 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)
{
....
}
}}
我需要在 class 中使用此代码,但由于命名空间,我遇到了错误。有什么帮助吗?来自文档:https://www.boost.org/doc/libs/1_47_0/libs/serialization/doc/serialization.html#splittingfreefunctions
提前致谢!
您将侵入式序列化(成员函数)与非侵入式(自由函数)混淆了。
你post的咖啡是免费功能(可以用,例如当你无法将序列化代码添加到class时(它可能来自第三方header) .
在 class 定义中,您应该采用成员函数方法:https://www.boost.org/doc/libs/1_72_0/libs/serialization/doc/serialization.html#member
如果您还需要拆分 save/load 个函数,您也可以将其作为成员函数来执行:https://www.boost.org/doc/libs/1_72_0/libs/serialization/doc/serialization.html#splittingmemberfunctions
答案是将整个命名空间放在 class 之外。
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)
{
....
}
}}
我需要在 class 中使用此代码,但由于命名空间,我遇到了错误。有什么帮助吗?来自文档:https://www.boost.org/doc/libs/1_47_0/libs/serialization/doc/serialization.html#splittingfreefunctions
提前致谢!
您将侵入式序列化(成员函数)与非侵入式(自由函数)混淆了。
你post的咖啡是免费功能(可以用,例如当你无法将序列化代码添加到class时(它可能来自第三方header) .
在 class 定义中,您应该采用成员函数方法:https://www.boost.org/doc/libs/1_72_0/libs/serialization/doc/serialization.html#member
如果您还需要拆分 save/load 个函数,您也可以将其作为成员函数来执行:https://www.boost.org/doc/libs/1_72_0/libs/serialization/doc/serialization.html#splittingmemberfunctions
答案是将整个命名空间放在 class 之外。