c ++ 11 std :: shared_ptr + boost :: serialization [duplicate]

问题描述 投票:11回答:1

您好,有人已经设法通过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作为答案。

c++ shared-ptr boost-serialization
1个回答
0
投票

不可能“只是”创建一个序列化器<>,它将“只是”将shptr-serialization转换为对象指针序列化吗?如果尚未完成,我几乎可以确定,这可以在<100行代码中进行。

[此外,我知道您已指定不询问,但是我仍然会:当您尝试序列化shptr的“ X”变量时,为什么不序列化已取消引用的* shptr?对我来说,这似乎还不足以让我烦恼为smartptrs添加序列化..嗯..好的。美学。但我仍然认为这是可行的。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.