2013-02-20 131 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

相關問題