問題タブ [boost-serialization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3362 参照

c++ - ブースト シリアライゼーションを使用して XML からクラスをロードする

XML ファイルから単純なクラスを読み込もうとしていますが、次のエラーが発生します。

それは私が間違っている何かばかげているにちがいないが、私は何がわからない。誰かがアイデアを持っていますか?これが私のコードです:

0 投票する
3 に答える
566 参照

c++ - ポータブル アーカイブが GCC でコンパイルされない

Windows と Linux の両方でデータを (逆) シリアル化する必要があります (そしてその間でファイルを転送します)。例にある Boost のシリアライゼーションライブラリのポータブル バイナリ アーカイブを使用したかったのです。/

これは Windows (VS 2008) では問題なく動作しますが、GCC 4.3.2 ではコンパイルに失敗し、次のエラーが発生します。

誰でも解決策を提案できますか?

どうもありがとう!

0 投票する
1 に答える
939 参照

c++ - Boost message_queue とシリアライゼーションの使用の簡単な例を探しています

ブースト message_queue とシリアライゼーションを一緒に使用する小さな実例を誰でも共有できますか? クラスを使用してプロセス間でデータを交換したいのですが、研究に行き詰まっています。

0 投票する
3 に答える
6093 参照

c++ - 派生クラスのテンプレート関数を呼び出す

C++ で、基本クラスへのポインターを持っているときに派生クラスの関数を呼び出すときに問題が発生しています。

編集:いくつかの回答はCRTPに私を紹介しました

しかし、私のポイントは、現在処理されているタイプを認識していないため、「Base *」ではなく「Base *」クラスへのポインターが必要であるということです (現在のインスタンスは、ある種のファクトリから作成されます)。

クラス:

使用法:

言語が仮想テンプレート機能をサポートしていないため、func を仮想化できません。

クラスのみがテンプレート引数を持つ場合にのみ許可され、その中の関数にテンプレート引数がある場合は許可されません。

Boost.Serialization 内で解決された同様の問題を見たことがありますが、解決策を理解できませんでした。

ありがとう、

コビー・メイア

0 投票する
2 に答える
1301 参照

c++ - boost :: serializationを使用すると、バイナリサイズが大幅に増加します

私はアプリでかなり複雑なデータ構造(主にSTLコンテナーを使用)を使用し、Boost(v1.34)を使用してそれらをシリアル化します。

デバッグシンボル(gcc -g)を使用してコンパイルするたびに、結果の実行可能ファイルは巨大になります(約25 MB)。すべてのデバッグシンボルを削除すると、サイズが最大3MBに減少します。

サイズが大きくなった原因を突き止めてみましたが、シリアル化の方法が原因のようです。特に、シリアル化を呼び出すモジュールのオブジェクトファイル(「oarchive << myObject」などのコード)は大きく、シリアル化部分をコメントアウトするとサイズが大幅に小さくなります。

これらのシンボルの生成を防止すること、またはそれらを選択的に取り除くことは可能ですか?
自分のコードのデバッグシンボルが必要なため、すべてのシンボルを削除することはできません。

0 投票する
1 に答える
1074 参照

c++ - Boostを使用して3Dアレイをシリアル化する方法は?

さて、最近ブーストに切り替えて、単純なオブジェクトまたは単純なクラスのシリアル化を部分的に理解しています(ブーストチュートリアルは私を混乱させます)が、クラスメンバーを含む3D配列をシリアル化するにはどうすればよいですか?

TileListという配列(std :: vector)があります。これには、クラスTileのオブジェクトが含まれ、クラスTileにはintTileIDとintTilePassabilityの2つの変数しか含まれていません。

シリアル化のチュートリアルが目立たない方法とSTLコンテナの方法で行うように試してみましたが、エラーのスタックが返されます。誰かがそれを正しく行う方法を説明できますか?ありがとうございました。

0 投票する
1 に答える
1361 参照

c++ - マップを使用してバイナリシリアル化をブーストし、シリアル化時にクラッシュを2倍にします。

これは私の問題を表すサンプルです。finalTimeが25を超えない限り、マップは完全に正常にシリアル化されます。ブーストユニットテストで、std::exception入力ストリームエラーが発生しました。また、このコードはpolymorphic_text_archivesを使用して正常に機能します。マップの読み取り中にエラーが発生します。

0 投票する
2 に答える
2423 参照

c++ - シリアル化と倍増を後押し

Boostシリアル化ライブラリを使用してクラスを文字列にシリアル化しようとしていますが、クラスにはいくつかのdoubleメンバー変数が含まれています。

以下は、シリアル化に使用しているコードです。

これが私のPointクラス内のシリアル化メソッドです。

文字列にシリアル化すると、ブーストは期待どおりに二重から文字列への変換を処理しないようです(丸めの問題があるようです)。少し調べてみると、他の人が同じ振る舞いを報告しているようです。また、doubleを文字列に、またはその逆に変換することに関連する精度に関連する問題と、これが問題を引き起こす可能性があることも理解しています。

奇妙なことに、私にはわかりませんが、stringstream自体を使用してdoubleをストリームにリダイレクトしたり、boostのlexical_cast関数を使用してstringstream.str()から変換したりすると、これは発生しないようです。ダブルに。boostが独自のシリアル化/逆シリアル化クラスを持っていることを発見する前に、私は実際にstringstreamおよびlexical_cast呼び出しを使用して独自のクラスを作成しましたが、問題なく機能しました。シリアル化ライブラリを放棄して、以前の状態に戻る必要がないことを本当に望んでいます。うまくいけば、いくつかの設定/特性などがあります。私は行方不明です。

0 投票する
1 に答える
1013 参照

java - ブーストシリアル化テキストアーカイブはクロスランゲージですか?

やあ...質問をもっとよく説明しようとしています...TCP接続を介してデータを送信する前にブーストシリアル化テキストアーカイブを使用しています...受信したデータをJavaアプリケーションに渡す必要があります...シリアル化されたストリームは、データのみ、またはデータ+ブーストシリアル化(タグ、コードなど)で構成されます...この場合、データをjavaアプリケーションに転送する唯一のチャンスは、転送する前にそれらをフィルタリングすることです。 ..

0 投票する
3 に答える
1241 参照

c++ - binary_oarchiveインスタンスを再利用することは可能ですか?

私の質問は、 5年前のこのスレッドで説明したものと同じです(これには良い答えはありません)。

次のように、オブジェクトをバイトバッファにシリアル化します。

これをループで実行すると、パフォーマンスがかなり悪くなります。1秒あたり最大14,000個のオブジェクトを取得します。

私はbinary_oarchiveの再現に至るまで問題を特定しました。ループ内の同じアーカイブインスタンスで同じ文字列に書き込むと、最大220,000オブジェクト/秒が得られますが、オブジェクトは次々にシリアル化されます。これは私が望むものではありません。クリアしたい各オブジェクトがシリアル化された後、同じバッファーを再利用します(最初までシークします)。

どうやってやるの?