私はBoost.Serializationを使用してクラスのコンテンツをアーカイブしています。メンバ変数の1つは静的なstd :: vectorです。静的メンバーとブーストシリアル化
アーカイブと復元はうまくいっていますが、ライブラリが静的メンバーを一度保存することを望んでいました。ファイルサイズで判断すると、静的メンバーはアーカイブされたインスタンスごとに完全に保存されています。
これは、静的ベクトルにset/gettersを使用し、クラス外で静的ベクトルを一度シリアル化することで、簡単に回避できます。
しかし、私はむしろ自己完結型のクラスを持っています。クラスの静的コンテンツを1回だけアーカイブするのは、きれいで簡単な方法ですか?
私はそれが正直であると確信しているとは思わない。静的インスタンスはすべてのクラスインスタンスの同じメモリアドレスに存在するので、ライブラリを何らかの形で選択し、ファイルを書き込むたびにベクトルを書き込まないように十分にスマートになることを期待していました。 – Pieter
最初にベクトルをシリアライズし、次にすべてのインスタンスを '簡単に回避している'と言っていましたが、自分のクラスにserialize()が含まれていると言っていましたが... 最初にベクトルをシリアライズすることは私が当然のことです(これは今のところ動作しています...) – Pieter
ブーストはメモリの場所にかかわらず、シリアライズするように指示するものをシリアル化します。 。 静的セクションはどこに保存されますか?最初、最後、途中で? 「シリアル化」のようなフラグを使用する方法もあります。 – arul