//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
为什么在反序列化期间出现此错误?
答案 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;