問題タブ [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.
c++ - boost.serialization - 無料バージョンと基本クラスの実装
基本的にサブクラスを構築する「ジェネレーター」クラスがあります。このことを使用するには、単純にサブクラス化し、正しいパラメーターを渡して、構築したいオブジェクトを構築します。これらをシリアル化したいのですが、すべてのデータがベースにあるため、サブクラスごとにシリアル化する正当な理由はありません。これが私が例として持っているものです:
できれば無料版で動いてほしい。それは...ですか?
上記のバージョンは、serialize が test_derived のメンバーではないというエラーを吐き出します。
c++ - BoostC++ライブラリのコンパイルと使用を支援する
Boostのシリアル化ライブラリを使用したいC++プロジェクトに取り組んでいます。Boostのホームページから最新のBoostライブラリをダウンロードしてインストールしました。
Boostのデモシリアル化の例の1つをコンパイルして実行しようとすると、次のようなあらゆる種類のエラーが発生しました。
私はC++とブーストに不慣れなので、助けていただければ幸いです。
ありがとう
visual-c++ - マネージド クラスで boost::serialization を使用することは可能ですか?
boost::serializationを使用して完全にシリアル化された多くのネイティブ C++ クラスがあります。
次に、メンバー フィールドの一部をpropertyに変更して、それらをPropertyGridsで使用できるようにします。クラス定義をref class Xに変更すると、膨大な数のコンパイル エラーが発生しました。
#1:
error C2893: Failed to specialize function template 'boost::archive::text_oarchive &boost::archive::detail::interface_oarchive<Archive>::operator <<(T &)' d:\someAddress\someFile.cpp 58
#2:
error C2784: 'std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const std::_Smanip<_Arg> &)' : could not deduce template argument for 'std::basic_ostream<_Elem,_Traits> &' from 'boost::archive::text_oarchive' d:\someAddress\someFile.cpp 58
ここには小さなクラスがたくさんあるので、それぞれのラッパーを書くのは面倒です!
使用したサンプル クラスは次のとおりです。
そして、ここにメインのテストコードがあります:
マネージド クラスでboost::serializationを使用することさえ可能ですか?
編集:
クラス使用コードを次のように変更すると:
次に、エラーが 1 つだけ表示されます。
error C2027: use of undefined type 'boost::STATIC_ASSERTION_FAILURE<x>' D:\path\to\Boost\boostw\boost\archive\detail\check.hpp 60
c++ - 仮想基本クラスでブースト シリアル化を使用すると、C4250 (クラスが優先度を介してメンバーを継承する) の原因は何ですか?
VC++ コンパイラの警告C4250の意味は明らかです。(ただし、説明についてはこちらを参照してください。) 'class1' : inherits 'class2::member' via dominance
現在、 boost::serialization (1.44.0) を使用して抽象基本クラスを持つクラス階層をシリアル化するときにこの警告が表示されるという問題があります。
私のクラス は、この警告を引き起こす可能性のあるダイヤモンドのような継承階層を形成していませんboost::detail::is_virtual_base_of_impl<...>
が、派生クラスのインスタンスをシリアル化するときのインスタンス化によって警告が発生することに注意してください。( Boost.TypeTraitsの is_virtual_base_of を使用しているようです。)
Visual Studio 2005 で警告を再現するための最小限のコード サンプルを次に示します。コードをそのまま 1 つの cpp ファイルにドロップし、コンパイルする必要があることに注意してください。
警告をトリガーするコメントでマークしたコード内の 2 つのポイントにも注意してください。が使用されていない場合、警告はトリガーされませんBOOST_CLASS_EXPORT
が、さらに興味深いことに、派生クラスが継承を使用しない場合、警告もトリガーされません! (だから結局C4250が分からないのかもしれません。)virtual
そして、ここにコンパイラの警告があります (うーん!):
c++ - シリアル化のブースト-std::tr1 :: shared_ptrをシリアル化しますか?
Boost::Serializationにはのサポートが組み込まれていboost::shared_ptr<>
ます。
このサポートを使用する方法もありstd::tr1::shared_ptr<>
ますか?からに
キャストすることは可能ですか?std::tr1::shared_ptr<>
boost::shared_ptr<>
c++ - デフォルトのコンストラクターなしでクラスへのポインターをシリアル化するときにsave_construct_dataをオーバーライドする際の問題
この例http://www.boost.org/doc/libs/1_42_0/libs/serialization/doc/serialization.html#constructorsに従おうとしていますが、エラーが発生し続けます。例に従って、プライベート変数にアクセスしようとするとエラーが発生します(十分に公平です)。
しかし、save_construct_dataを友達として追加すると、あいまいなエラーが発生します。
関数定義をfriend宣言に移動することはできますが、それは醜いです。
次に何を試してみるべきですか?
ありがとう、ジェイエン
c++ - variables_map のシリアル化
boost::program_options::variables_map をシリアライズ/デシリアライズするにはどうすればよいですか? 既に実装されているシリアル化関数が見つかりません。マップを抽出して再構築するために使用できる variables_map の関数もわかりません。
c++ - Boost:Serialization: デシリアライズされたデータをクリーンアップするのは誰?
オブジェクトの生ポインタをシリアル化し、別のアプリケーションに送信しています。
逆シリアル化すると、別の生ポインタが得られます。これは、Boost::Serialization がこのポインターの背後にあるオブジェクトを内部的に構築していることを意味します。私は今、誰がオブジェクトの所有権を持っているのか、Boost がそのオブジェクトを削除するのか、それが不要になったのかを知りたいと思っています。
おそらく問題が何であるかをよりよく示すいくつかのコード:
serialization - boost::serializationポリモーフィック型の初期化
基本クラスと4つの派生クラスがあります。すべての派生クラスを基本クラスのポインター型のベクトルに格納します。最初の初期化中に、コンストラクターを使用して各派生型を異なる方法で作成します。基本的に、それらはそれぞれ、ctorに異なるパラメータタイプを持っています。(BOOST_CLASS_EXPORTをコンパイルするには、保護されたデフォルトのコンストラクターを提供する必要がありましたが、それは別の話です)。これらの派生クラスのすべてのメンバー(ctorに入力)を保存することはできません/できません。
ここで、boost :: serializeを使用してディスクからオブジェクトをロードすると、これらのメンバー(シリアル化されておらず、各派生型に固有)が破棄されます。また、基本クラスのポインターのみを格納しているため、これらの派生型を再初期化する方法を考えることはできません。
正確に必要なのは、すべてのコンテンツを削除せずに、派生型(ポインター)を部分的にロードできることです。
これを克服する方法はありますか、魔法のブースト定義または関数呼び出しはおそらくありますか?そうでなければ、boost :: serializeを使用したポリモーフィズムはまったく不可能です。何かが足りないはずであり、問題を十分に定義できることを願っています。
c++ - チャネル上の C++ Boost TCP シリアル化オブジェクト、双方向通信が機能しない
私はクラス、非常に愚かなクラスを持っています。このクラスのオブジェクトは、asio by boost を使用して tcp 経由で送信したいと考えています。私のクラスはブーストのものと正しく友情を築き、メソッドのシリアライズを実装しています...
クライアントがサーバーに接続し、自分のオブジェクトを送信してから、サーバーが同じクラスの別のオブジェクトを送り返すことを望んでいます。
私はこれをやろうとしました:
サーバー内:
データはシリアライズ可能なクラスです。
クライアントで:
まあ、うまくいきません。なんとなくブロックします。
問題はこの双方向スキームであるため、好奇心です.Q、W、X、Yの行を削除すると、うまくいきます!!! これを解決する方法を知っていますか?