c++11 shared_ptr + Boost::Serialization
c++11 shared_ptr + Boost::Serialization
我需要 Boost::Serialization specialization for std::shared_ptr。
我正在编写一个通过 Boost::Asio 发送对象的程序,其中许多对象在内部使用 shared_ptrs。使用解决方法仅序列化它们所引用的对象是非常不舒服的。
我一直在尝试自己制作,查看为 Boost::shared_ptr 提供的实现,但我缺乏对这些对象应该如何处理的理解。
更改 Boost::shared_ptr 序列化中的命名空间使序列化指针成为可能,但反序列化对我不起作用。
作为最后的手段,我可以(也许应该)切换到对我的对象使用 std::unique_ptrs,因为目前,他们似乎拥有它们,但这会导致我遇到同样的问题,只是unique_ptr。
你说你在内部使用std::shared_ptr
。那么为什么不使用boost::shared_ptr
代替它,它完全受boost::serialization
支持,并且具有与std::shared_ptr
相同的功能?
我不确定这是否是最好的方法,但它似乎有效。
更改了命名空间,并将此加载方法添加到从 Boost::shared_ptr 专用化复制shared_ptr专用化标头:
template<class Archive, class T>
inline void load(
Archive & ar,
std::shared_ptr< T > &t,
const unsigned int /* file_version */
){
T * t_ptr;
ar >> boost::serialization::make_nvp("px", t_ptr);
t = std::shared_ptr<T>(t_ptr);
}
相关文章:
- 我在使用 boost::serialization 时遇到了一个问题,我的代码在 Linux 中运行良好,但在 Wind
- 使用 Boost::Serialization 序列化具有 std::mt19937_64 成员的类
- 如何在Boost Serialization ::存档中抑制额外信息
- 为什么Boost Serialization使用的类版本限制为8位
- C++ Boost.Serialization - 用户定义成员的非侵入式序列化
- 是否有一种方法可以使用Boost Serialization序列化迭代器
- 如何在Boost Serialization中检索多个对象值
- Do grain和Boost Serialization使用零拷贝
- boost::serialization-序列化从泛型属性/功能容器派生的类
- 将 Boost.Serialization 直接与虚拟钻石继承一起工作
- c++11 shared_ptr + Boost::Serialization
- 使用boost.serialization和STL容器作为模板参数
- 调试Boost.Serialization地址跟踪
- 使用Boost.Serialization进行序列化
- 如何在Boost serialization中创建用于序列化的接口
- 实现对象跟踪,如在 Boost::Serialization 中
- Boost::Serialization VS2015在Release Mode Mnly中编译错误
- 使用Boost.Serialization时更改STL容器的序列化
- vector(反)序列化与Boost.serialization的向后兼容性
- Boost::serialization——是否有一种可移植的方法来对std::wstring进行二进制序列化?