c ++ 11 std :: shared_ptr + boost :: serialization

时间:2013-02-20 07:57:45

标签: c++ shared-ptr boost-serialization

嗨,有人已经设法用boost :: serialization序列化C ++ 11 std :: shared_ptr。有很多过时的帖子,但没有一个可接受的解决方案。我不打算讨论为什么我要使用std :: shared_ptr只是接受它!

我发现了另一篇帖子:boost serialize and std::shared_ptr但它没有回答我的问题如何序列化std :: shared_ptr它只建议使用boost :: shared_ptr这在我的情况下是不可能的。

这篇文章How can boost::serialization be used with std::shared_ptr from C++11?也建议只使用boost :: shared_ptr。

如果有人已经找到一个可以设法序列化std :: shared_ptr的工作,我会感兴趣的。

嘿伙计们我终于找到了解决问题的方法,请参阅https://stackoverflow.com/a/14999396/2039157我的答案。

1 个答案:

答案 0 :(得分:0)

是不是可以“只”创建一个序列化器<<和反序列化器>>那将“只是”将shptr-serialization转变为对象指针序列化?如果还没有完成,我几乎可以肯定这是可能的< 100行代码。

另外,我知道你已经指定不要问,但我仍然会:当你尝试序列化shptr的“X”变量时,你为什么不能序列化dereferenced * shptr?对于我来说,为智能手机添加序列化,这似乎没有什么区别。嗯......好吧。美学。但我仍然认为这是可行的。

无论如何,你可以碰到另一面墙:如果你使用类继承,如果你携带shptr 中的对象通过指向基类的指针,你会遇到明显的问题,串行器会不知道它实际上是什么命令序列化。但是这是没有RTTI的序列化的经典问题,那么,你必须以某种方式解决,但这不是shptrs的问题。

免责声明:我几年前最后一次使用boost :: serialization。我实际上并没有尝试序列化shptr,但是从我记忆中来看,这是一个非常开放的框架,对于任何自定义类型都相对容易扩展,所以我认为shptrs并不比我的奇怪类更好 - 我管理的 - to-serialize:)