5
//define
typedef std::vector<double> vertex_data;

//serialise
std::ostringstream oss;
boost::archive::text_oarchive oa(oss); 
vertex_data data = .......get_data();//returns vertex_data
oa & m_state & data;//send this data over network

//deserialise
std::istringstream iss(recvd_msg);
boost::archive::text_iarchive ia(iss); 
vertex_data data;
ia>>data; //error here  

为什么在反序列化过程中会出现此错误?

4

2 回答 2

17

问题是你没有为 std::vector 定义特殊的序列化,所以它回退到默认的序列化,它试图在要序列化的类上调用一个名为 serialize 的成员。

要获取 std::vector 的特殊代码,您需要包含<boost/serialization/vector.hpp>,如下所述:

http://www.boost.org/doc/libs/1_54_0/libs/serialization/doc/serialization.html#models

于 2013-07-26T13:50:51.967 回答
0

要使用 boost 序列化器反序列化,您需要使用运算符&,就像您用于序列化一样。

std::istringstream iss(recvd_msg);
boost::archive::text_iarchive ia(iss); 
vertex_data data;
ia & data;
于 2013-07-26T13:46:11.190 回答