1

デフォルトのシリアル化機能をブーストで使用しようとしていますが、複雑なベクトルをシリアル化できませんでした。私はこれを試しました:

#include <fstream>
#include <complex>
#include <vector>

#include <boost/archive/text_oarchive.hpp>
#include <boost/serialization/vector.hpp>
#include <boost/serialization/complex.hpp>

using namespace std;
typedef complex<double> type;

template<class Archive>
void serialize(Archive& ar, vector<type>& objs, const unsigned version) {
    ar & objs;
}

int main(){
    vector<type> r;
    r.push_back(1.3);
    r.push_back(12.12);
    r.push_back(-31.05);

    ofstream ofs("test.txt");
    boost::archive::text_oarchive oa(ofs);
    oa & r;
    return 0;
}

これは正常にコンパイルされますが、実行時にクラッシュします。それでも私がするなら

typedef double type

その後、すべて正常に動作します。その解決策が思いつきません。何か助けはありますか?

ありがとう、

1月

4

2 に答える 2

0

まとめて回答済みとしてマークするだけです:

コードの g++ バージョンが正しく動作することが報告されているため、問題は Visual Studio 2012 のブースト 1.54 実装にあるようです。私のコードをテストし、正しい方向に向けてくれた@DieterLückingに感謝します。

于 2013-10-09T05:45:17.197 に答える