2017-11-27 6 views
-1

にクラスオブジェクトを変換するために、ブーストのシリアル化を使用する:https://theboostcpplibraries.com/boost.serialization-class-hierarchies私はこれを参照していますベクトル<unsigned char型>

を私はstd::vector<unsigned char>

class Person { 
    int id; 
    std::string name; 
} 

に、私のクラスのオブジェクトをシリアル化し、そのに戻って非直列化しますクラス。

しかし、私は上記URLの実装を完全に理解していません。誰でも助けることができますか?

答えて

0

この場合、original documentationが最適です。 ブログは学習段階にある人によって書かれていることが多いので、信頼できない場合がほとんどです(私はこれを言っているわけではありませんが、あなたが知らない人が書いたブログには信頼できないはずです)。

ここでのトリックはテンプレートメソッドvoid serialize(Archive & ar, const unsigned int version)です。 これは一旦テンプレートとして使用されると、データの直列化と一度の逆シリアル化に使用されます。

コードは同時に書き込みと読み取りを行っているため、ストリーム演算子<<>>は使用できません。ライブラリの作者はビットワイズを使い、オペレータ&を使って読み書きができることを表現しました。 参照の定義のように奇妙に見えますが、左側にメソッドの引数があり、右側にフィールド名があることに注意してください。

関連する問題