C++ 错误C2039:&x27;序列化';:不是';标准::向量<_Ty>'; //定义 typedef std::向量顶点_数据; //连载 std::ostringstream oss; boost::archive::text_oarchive oa(oss); 顶点_数据=….获取_数据()//返回顶点数据 oa&m_状态和数据//通过网络发送此数据 //反序列化 std::istringstream iss(recvd_msg); boost::archive::text\u iarchive ia(iss); 顶点数据; ia>>数据//这里出错

C++ 错误C2039:&x27;序列化';:不是';标准::向量<_Ty>'; //定义 typedef std::向量顶点_数据; //连载 std::ostringstream oss; boost::archive::text_oarchive oa(oss); 顶点_数据=….获取_数据()//返回顶点数据 oa&m_状态和数据//通过网络发送此数据 //反序列化 std::istringstream iss(recvd_msg); boost::archive::text\u iarchive ia(iss); 顶点数据; ia>>数据//这里出错,c++,serialization,boost,C++,Serialization,Boost,为什么在反序列化过程中出现此错误?要使用boost serialiser进行反序列化,需要使用运算符&,就像用于序列化一样 //define typedef std::vector<double> vertex_data; //serialise std::ostringstream oss; boost::archive::text_oarchive oa(oss); vertex_data data = .......get_data();//returns vertex_d

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

要使用boost serialiser进行反序列化,需要使用运算符&,就像用于序列化一样

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

问题是您没有为std::vector定义特殊的序列化,因此它会返回到默认序列化,即尝试在要序列化的类上调用名为serialize的成员

要获取std::vector的特殊代码,需要包括
,如下所述:


因为
serialize
不是std::vector的成员。但是stl容器已经可以通过boost进行序列化了,不是吗?尝试包含
>也可以进行反序列化,但是我尝试了&并且得到了相同的错误谢谢!我很担心必须把我的载体分割开来进行传输
std::istringstream iss(recvd_msg);
boost::archive::text_iarchive ia(iss); 
vertex_data data;
ia & data;