向量<complex> </complex>的Boost.Serialize错误

时间:2013-10-08 12:28:24

标签: c++ serialization boost vector complex-numbers

我正在尝试使用带有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

然后一切正常。我无法找到解决方案。有什么帮助吗?

谢谢,

2 个答案:

答案 0 :(得分:0)

只需结束并标记为已回答:

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

答案 1 :(得分:0)

大声笑 - 而不是说:

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

我会说:

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

Rbert Ramey