//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
Run Code Online (Sandbox Code Playgroud)
为什么在反序列化期间出现此错误?
Seb*_*edl 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