Boost序列化std::shared_ptr

CaptianSlow 2015-03-19 10:45:18
大家好,在此求助两个boost::serialization相关问题。
1.智能指针boost::shared_ptr<void> p_mData会通过Widget来初始化,那么在这里编译器会报错,原因是没有办法通过void类型找到Widget类型的serialize方法。类ToBeSerialize是已经设计好了的,请问有无办法规避此问题?
class Widget
{
int data;
friend class boost::serialization::access;
template <typename Archive>
friend void serialize(Archive& ar, Widget& widget,
const unsigned int version);
};
class ToBeSerialize
{
boost::shared_ptr<void> p_mData;
friend class boost::serialization::access;
template <typename Archive>
friend void serialize(Archive& ar, ToBeSerialize& tobeserialize,
const unsigned int version);
}



2.老生常谈。boost::serialization无法序列化std::shared_ptr. 请问大家有没有高招在不修改boost库文件的情况下(无需重新编译动态库),使下面的种序列化变得可能。单纯修改头文件可以接受。

class ToBeSerialize
{
std::shared_ptr<void> p_mData;
friend class boost::serialization::access;
template <typename Archive>
void serialize(Archive& ar, const unsigned int version)
{
ar & BOOST_SERIALIZATION_NVP(p_mData);
}
}
...全文
294 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_42776354 2018-12-23
  • 打赏
  • 举报
回复
boost 是可以序列化 shared_ptr 的
CaptianSlow 2015-03-20
  • 打赏
  • 举报
回复
随便来个人,结贴给分

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧