問題タブ [cereal]

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 に答える
1826 参照

c++ - Cereal は raw ポインターをサポートしていません

編集:質問のタイトルは、私が得たコンパイラ エラーの深い誤解に基づいていました。私は(ばかげて)エラーが、関数内で宣言したオブジェクトに逆シリアル化しようとしたと仮定していました。これは完全に間違っていました。自分で十分なデバッグ作業を行っていないか、何が問題なのかを突き止めることができたはずです。そのため、タイトルがかなり誤解を招くものだったので、変更しました。助けてくれた Андрей Беньковский に感謝します。


私は、シリアルを使用してエンジンで 3D モデルのシリアル化関数を作成しています。これは、非常に効率的で使いやすいことが証明されています。これまでのところ、単純なメッシュのシリアル化 (逆) をテストしたところ、すべてうまくいきました。しかし、今、別のクラスを逆シリアル化しようとしていますが、問題が発生しました。

これは私のクラスで、逆シリアル化する必要があります:

それは私にコンパイラエラーを与えます:Cerealは生のポインターのシリアル化をサポートしていません-それはポインターではありませんが、スマートポインターを使用してください。コードの別の部分では、同様のことがうまく機能します。誰かがこれを解決するのを手伝ってくれたらうれしいです。

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

c++ - Cereal を使用して、サブオブジェクトで囲まずに json オブジェクトをシリアル化する方法

次のような C++ のクラスがあるとします。

Cereal を使用して、その構造体を JSON にシリアライズしたいと考えています。そこで、次のようなシリアル化関数を追加しました。

Point が別のオブジェクトのメンバーまたは配列の要素である場合、これは正常に機能します。しかし、Point を JSON ファイル全体の主要なオブジェクトにしたい場合、正しく機能しません。たとえば、次のコードを使用します。

次の出力が得られます。

"value0"次のように、キーを削除し、ファイル全体を占めるようにオブジェクトを昇格させたいと思います。

私がそれを行うことができる唯一の方法は、基本的にシリアライゼーション関数を再実装し、キー名を手動で追加することです。

クラスに既に実装したシリアル化機能を利用してそれを行う方法はありますか?

0 投票する
0 に答える
513 参照

c++ - Cereal を使用して、ポリモーフィック クラスで C スタイルの配列シリアル化を使用する方法は?

ここに簡単なクラスがあります:

これは正常に動作しています。つまり、シリアライゼーションのインとアウトは問題なくテストされています。

ここでポリモーフィズムを使用したい場合に問題が発生します。このドーター クラスは、他の「ドーターのような」クラスと同様に、純粋な仮想マザー クラスから継承します。

CEREAL_REGISTER_TYPE(...)そして、マクロを使用して clDaughter クラスを登録したい場合、

コンパイラがクラッシュする

「シリアルは、指定されたタイプとアーカイブの組み合わせの出力シリアル化関数を見つけることができませんでした」

配列をループでシリアル化すると(醜いスタイル) 、このbinary_data(...)方法に問題があるようです。__pData

エラーは発生せず、正常に動作します。binary_data()と併用する場合のみCEREAL_REGISTER_TYPE()です。

私は何を取りこぼしたか ?

(質問を先取りするbinary_data()ために、ループよりも20〜30倍高速であり、ここで高速である必要があるため、使用したいと思います)

お手伝いありがとうございます

0 投票する
0 に答える
835 参照

c++ - XMLに変更した後、「シリアルは出力シリアル化関数を見つけることができませんでした」

theia というライブラリで Reconstruction クラスをシリアライズしたいと考えています。クラス Reconstruction にはシリアル化機能があります。

既に設定されているシリアライゼーションは、次のように正常に機能します。

しかし、それを XMLOutputArchive に変更すると (必要な #include を追加して)、機能しなくなりました!

エラーは次のとおりです。

[...]

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

c++ - シリアルを使用してboost::ptr_vectorをシリアル化する方法は?

boost::ptr_vectorシリアルを使用してインスタンスをシリアル化することは可能ですか? もしそうなら、どのように?

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

c++ - 仮想継承とポリモーフィズム: シリアル ライブラリはオブジェクト レイアウトをいじっていませんか?

古典的なひし形パターンに続く4 つのクラス ( A、および) とB、を含むクラスがあります。シリアルシリアル化ライブラリを使用してこれらのクラスをシリアル化したいです。CDContainerunique_ptr<A>

すべてのクラスには cerealsaveとfunctions がありますが、この例で使用されているのは と だけなので、とloadにのみ含めました。BContainer

これらのクラスを次のように使用します。

そして、次の出力が得られます。

私の質問は次のとおりです。これは穀物のバグである可能性が高いですか、それとも仮想継承で取得できないものがありますか?

特定のオブジェクトのフィールドのアドレスが C++ プログラムで変更されることは予想されますか?

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

c++ - 名前付きの値のペア (nvp) を持つポリモーフィック型を逆シリアル化するときの「シリアル::例外」

名前付きの値のペアをシリアル化したポリモーフィック クラスを逆シリアル化しようとすると、「JSON の解析に失敗しました - 提供された NVP が見つかりません」というメッセージとともに「cereal::Exception」が発生します。私は何か間違ったことをしていますか?

ここにヘッダーがあります:

そして私のcppファイル:

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

c++ - C++ CMake コンパイル エラー (/usr/bin/ld: が見つかりません)

*これについて多くの質問があることは知っていますが、CMakeについて話すときはあまり役に立たないため、質問をするという私の決定*

そのため、コンパイラにパラメーターをインポートして与えるためにCMakeを使用するCLionに取り組んでおり、「ExternalLibraries」というフォルダーにある外部ライブラリ(シリアル:クラスをjsonファイルにシリアル化する)を正常にインクルード(インポート)しました私のプロジェクトフォルダーのルート。IDEを再起動してコードを再度実行しようとするまで、問題なく動作していました...コンパイルエラーが返されました(と思います)。

私の CMake ファイルは次のようになります。

そして、シェルを実行/コンパイルしようとすると、次のようになります。

ライブラリが実際にコードにインポートされているように見えるため、何が起こっているのかわかりません (シリアルを含めると赤い文字はありません)。

私のCMakeファイルに何か問題があるかどうか誰かに教えてもらえますか?

PD: 誰かがそれを必要とする場合に備えて、これはスクリーンショットです。

PD2: 私は基本的な os を使用しています: Freya (Ubuntu 14.04)

ここに画像の説明を入力

0 投票する
0 に答える
1487 参照

c++ - Cereal を使用した C++ シリアル化 - ポリモーフィック クラスを最適にシリアル化する方法

オブジェクト グラフ (実際にはツリー) のシリアル化をCerealで実装しようとしています。

Cereal は、生のポインター (これらのポインターが指すオブジェクト) のシリアル化をサポートしていません。私の現在のアイデアはgetType()、オブジェクトに関数を持たせてその型を見つけ、その型に応じてファクトリでそれらを構築することです。

正しいオブジェクトが作成されたら、アーカイブで初期化できます。

getType()すべてのクラスがその関数から一意の型を返す必要があるため、これは明らかに理想的なソリューションではありません。

このアーキテクチャをどのように改善できますか?