11

こんにちは、すでに C++11 の std::shared_ptr を boost::serialization でシリアライズできた人がいます。時代遅れの投稿がたくさんありますが、受け入れられる解決策はありません。std::shared_ptr を使用したい理由については議論しません。ただそれを受け入れてください!

私はこの他の投稿を見つけました: boost serialize and std::shared_ptrしかし、std::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 serialization に「ちょうど」変換する serializer<< and deserializer>> を「just」作成することはできませんか? まだ完了していない場合は、100 行未満のコードでこれが可能であるとほぼ確信しています。

また、質問しないように指定されていることは知っていますが、それでも私はします: shptr である "X" 変数をシリアル化しようとすると、逆参照された *shptr をシリアル化できないのはなぜですか? smartptrs のシリアライゼーションを追加することを気にするほどの違いはないようです.. うーん.. わかりました。美学。しかし、それでも私は実行可能だと思います。

とにかく、別の壁にぶつかる可能性があります。クラス継承を使用し、基本クラスへのポインターを介してshptr 内でオブジェクトを運ぶ場合、シリアライザーが実際にシリアライズするように命令されているものを認識できないという明らかな問題があります。しかし、これは RTTI を使用しないシリアライゼーションの古典的な問題であり、どうにかして解決する必要がありますが、それは shptrs の問題ではありません。

免責事項: 私が最後に boost::serialization を使用したのは数年前です。私は実際に shptr をシリアライズしようとはしませんでしたが、私が覚えている限りでは、それは非常にオープンなフレームワークであり、任意のカスタム型に拡張するのは比較的簡単でした。シリアル化する:)

于 2013-02-20T08:03:33.053 に答える