1

我正在尝试使用带有 boost 的默认序列化工具,但我没有设法序列化复杂的向量。我试过这个:

#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

然后一切正常。我想不出解决办法。有什么帮助吗?

谢谢,

4

2 回答 2

0

只是总结并标记为已回答:

问题似乎与 Visual Studio 2012 的 boost 1.54 实现有关,因为据报道代码的 g++ 版本可以正常工作。感谢@DieterLücking 测试我的代码并为我指明了正确的方向。

于 2013-10-09T05:45:17.197 回答
0

大声笑 - 而不是说:

问题似乎与 Visual Studio 2012 的 boost 1.54 实现有关,因为据报道代码的 g++ 版本可以正常工作。

我会说:

问题似乎出在 Visual Studio 2012 上,因为据报告 g++ 版本的代码可以正常工作。

罗伯特·拉米

于 2014-02-03T22:50:24.660 回答