2013-02-20 82 views
10

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

我发现这个其他帖子: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我的答案。

+0

将std :: shared_ptr转换为boost :: shared_ptr以进行序列化。 – ForEveR 2013-02-20 07:59:19

+0

是的,我打算说,如果使用'boost :: shared_ptr'是一个选项,这是答案:http://stackoverflow.com/questions/9944274/boost-serialize-and-stdshared-ptr – jogojapan 2013-02-20 08:00:35

+0

嗯,转换是什么意思?我希望你不是要用boost :: shared_ptr;来代替std :: shared_ptr)请给出一个关于转换如何工作的例子。 – denim 2013-02-20 08:03:42

回答

0

是不是可以“只”创建一个串行器和解串器>>这将“只”将shptr序列化转换为对象指针序列化?如果还没有完成,我几乎可以肯定,这可能在100行代码中。另外,我知道你已经指定了不要问,但我仍然会:当你尝试序列化“X”变量是shptr时,为什么你不能只是序列化dereferenced * shptr?这似乎没有足够的差别,我不想为智能增加序列化功能。嗯..好吧。美学。但我认为这是可行的。不管怎样,如果你使用类继承,并且如果你通过指向基类的指针携带shptr 中的对象,你将会遇到一个明显的问题,那就是序列化程序不会知道什么是实际的它被命令序列化。但是,对于没有RTTI的序列化来说,这是一个典型的问题,那么,你需要以某种方式解决问题,但这不是问题。

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

+2

问题是boost :: serialization框架提供了一个头文件“boost/serialization/shared_ptr.hpp”,它允许序列化一个boost :: shared_ptr,会(我试过了)。问题是我有std :: shared_ptr,我必须序列化,并且boost :: serialization库中没有处理std :: shared_ptr的特殊头文件。所以我想知道是否有人设法序列化一个std :: shared_ptr。 – denim 2013-02-20 08:12:44

相关问题