错误C2039:'serialize':不是'std :: vector< _Ty>'的成员

时间:2013-07-26 13:40:18

标签: c++ serialization boost

//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  

为什么在反序列化期间出现此错误?

2 个答案:

答案 0 :(得分:12)

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

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

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

答案 1 :(得分:0)

要使用boost序列化程序进行反序列化,您需要使用operator&amp;,就像您要进行序列化一样。

std::istringstream iss(recvd_msg);
boost::archive::text_iarchive ia(iss); 
vertex_data data;
ia & data;