2011-02-23 6 views
3

私はブーストのバイナリシリアル化を使用しています。私は、出力(oarchive)のためにシリアル化するために、ポインタのstd::listを持っていますが、シリアライズはMSVCのダイアログでオブジェクトのserialize()関数内で失敗した:ブーストのシリアライゼーションアサーションが失敗する

Assertion failed: 0 == static_cast<int>(t) || 1 == static_cast<int>(t), file c:\program files\boost\boost_1_44\boost\archive\basic_binary_oprimitive.hpp, line 91

:コンソールウィンドウに印刷されて

R6010 -abort() has been called

と、このような文字列

どういう意味ですか?

ソースが配布されているので、ここにコードを投稿することはできませんが、単純なプロジェクトでこのエラーをシミュレートしようとしました。

P.S. Windows XPではブースト1.44とMSVC2010EEを使用します。私は上の「リトライ」をクリックすると、ウィンドウのデバッガは、コードの行の矢印を示し、次をシリアライズするarchive << myList;ライン「デバッグエラーを!」 - 私が意味をエラーがいくつかのデストラクタか何かで発生したように思えます。 オブジェクト内で変更を加えると、プロジェクト全体を再構築するときに適用されます(コンパイル前にクリーン) - ただし、コンパイルしただけでは(IDEが変更されたヘッダを含むすべてのソースが再コンパイルされることを示しています)前回のバージョン(printf()で試してみた)から実行時に変更が発生します。これは奇妙です。 時にはいくつかの重要な定義や何かを設定できますか?問題の

+0

コードなしでは手助けができません。これを小さな再現可能な例に煮詰めてここに含めることができますか? –

答えて

7

ラインは言う:

// trap usage of invalid uninitialized boolean which would 
// otherwise crash on load. 

いくつかの点であなたが初期化されていないboolをシリアライズしようとしているように見えます。それ以上のコードがなければ、どのコードを見つけるのか手助けできません。

+0

本当にブールがあります!クラッシュ直前! – Slav

+0

ええと、私は何をしなければならないのですか? #include ? - そのようなファイルはありません。 – Slav

+4

つまり、変数 'bool tmp;'を初期化せずに宣言するだけです: 'bool tmp = 0;' – karlphillip

関連する問題