2011-01-26 20 views
3

私は約1日間プロトタイプ化したEternity libraryを置き換えるC++オブジェクト永続ライブラリを探しています。永遠の図書館が不足しました。永遠に似たC++オブジェクト永続ライブラリ

object heirarchy

私は存続し、XML形式で復元したいstd::listArchiveJob*の年代を持っている:

私はこれに似たオブジェクト階層を作成しました。各ArchiveJobにはさまざまな子オブジェクトがあり、スタックにはいくつか、ヒープにはいくつかのオブジェクトが割り当てられています。

Eternityはこれらのオブジェクトを正しく永続化するのには効果的でしたが、復元すると失敗しました。

xml_read(sequence<pointers>(), *pList, pList->begin(), xml, "ScheduleList"); 

このコールArchiveJobオブジェクトに割り当てられたメモリ(永遠に精通している人のためには、以下の「復元」操作は、XMLファイルからデータを読み取ることができませんでした)が、そのすべての子が初期化されていないでした。

誰かがそのオブジェクト階層の永続化ソリューションをお勧めします:

  1. が持続することはできます/復元STLコンテナ
  2. は、(それが構築さを必要とする場合、それはVS200xソリューションファイルを持っていないなど)は、Windowsの開発者に優しいです
  3. 複雑なオブジェクト階層を扱うことができます

XML serialization with boostを学習するのに時間が必要ですか? STLコンテナのマスターオブジェクトに格納されている複雑なオブジェクト階層はどのように処理されますか?

答えて

3

Boost Serialization何が必要です:それはVS2008ソリューションファイルを持っていないという事実にもかかわらず

  1. serializing containers
  2. それはクロスプラットフォームとWindowsフレンドリーだ
  3. serializing derived class

[編集]実際に私が間違っていた、それが含まれていますVS7.1 solution file

+0

あなたはブーストシリアライゼーションを使ってこのようなオブジェクトの階層をシリアル化する経験がありましたか?あなたはどのロードブロッキングにも慣れましたか? –

+1

ええ、私はカスタムバイナリアーカイバ(ライブラリの例よりも移植性が高い)を使ってMMORPGに使用しました。私の階層構造は十分シンプルであり、ロードブロッキングはありませんでした。ドキュメント構造は少し良くなるかもしれませんが、大きな問題ではありません –

+0

は興味深いプロジェクトのように聞こえます:) –

0

別の方法はGoogle Protocol Buffersです。 It's not XML basedあなたがXMLに厳密に縛られている場合。外部ファイルで特別な構文を使用する必要があるため、もう少し複雑です。あなたが読むことができる階層についてthis discussion

+0

私は過去にGoogleプロトコルバッファを見ていましたが、自分の目的に合ったものではありませんでした。私はプロトタイプを書いたばかりで、Boost Serializationに非常に満足しています。しかし、特にVCの複数のバージョンがインストールされている場合は、気になることを構築する必要があります。 –

+0

私は最近boostpro.comを見つけました。優れたセットアップファイルを使用して構築され、配布されるライブラリを強化する。素晴らしいもの!彼らはboostproのウェブサイトへのリンクを置くべきです。 –