2

約1日プロトタイピングしてきたEternityライブラリに代わるC++オブジェクト永続性ライブラリを探しています。エタニティライブラリが不足しました。

次のようなオブジェクト階層を作成しました。

オブジェクト階層

XML形式で永続化および復元したいものがありますstd::listArchiveJob*それぞれArchiveJobにさまざまな子オブジェクトがあり、一部はスタックに割り当てられ、一部はヒープに割り当てられます。

Eternityはこれらのオブジェクトを正しく永続化するのに良い仕事をしましたが、それらを復元するときに失敗しました。

(Eternityに精通している場合は、次の「復元」操作でXMLファイルからデータを読み取ることができませんでした)

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

この呼び出しはArchiveJobオブジェクトにメモリを割り当てましたが、そのすべての子は初期化されていませんでした。

誰かが次のようなオブジェクト階層永続化ソリューションを推奨できますか?

  1. STLコンテナを永続化/復元できます
  2. Windows開発者に優しいですか(たとえば、ビルドが必要な場合、VS200xソリューションファイルがありますか)
  3. 複雑なオブジェクト階層を処理できます

Boostを使用したXMLシリアル化の学習に時間を費やす必要がありますか?STLコンテナのマスターオブジェクトに格納されている複雑なオブジェクト階層をどのように処理しますか?

4

2 に答える 2

4

ブーストシリアル化はあなたが必要とするものです:

  1. コンテナのシリアル化
  2. VS2008ソリューションファイルがないにもかかわらず、クロスプラットフォームでウィンドウに対応しています
  3. 派生クラスのシリアル化

[編集]実際に私は間違っていました、それはVS7.1ソリューションファイルを含みます

于 2011-01-26T13:19:18.550 に答える
0

もう1つの方法は、GoogleProtocolBuffersです。厳密にXMLにバインドされている場合は、XMLベースではありません。また、外部ファイルで特別な構文を使用する必要があるため、少し複雑になります。階層については、このディスカッションを読むことができます

于 2011-01-26T14:52:32.687 に答える