11

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

我发现了另一个帖子:boost serialize 和 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以获得我的答案。

4

1 回答 1

0

难道不能“仅仅”创建一个序列化器<<和反序列化器>>,它将“只是”将 shptr-serialization 转换为 object-pointer 序列化?如果还没有完成,我几乎可以肯定这可以在 < 100 行代码中实现。

另外,我知道您已指定不问,但我仍然会:当您尝试序列化 shptr 的“X”变量时,为什么不能只序列化取消引用的 *shptr ?这对我来说似乎没有足够的区别来为 smartptrs 添加序列化..嗯..好的。美学。但我仍然认为这是可行的。

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

免责声明:我最后一次使用 boost::serialization 是几年前。我实际上并没有尝试序列化 shptr,但据我记得,这是一个相当开放的框架,相对容易扩展任何自定义类型,所以我认为 shptr 并不比我管理的怪异类好 -序列化:)

于 2013-02-20T08:03:33.053 回答