【发布时间】:2015-07-13 15:05:41
【问题描述】:
我有一个服务器接收使用 boost 序列化 text_archive 序列化的数据。到达的数据可以是以下MB_BPRequest或MB_BPResponse之一,两者都扩展MB_BPMessage。
所以我有这个代码:
request_callback(MB_BPRequest);
response_callback(MB_BPResponse);
try {
MB_BPRequest req;
archive >> req;
request_callback_(req);
}
catch (std::exception& e) {
MB_BPResponse resp;
archive >> resp;
response_callback_(resp);
}
奇怪的是,如果我使用基类,它只会反序列化存档:
MB_BPMessage req;
archive >> req;
request_callback_(/*cast somehow*/req);
否则会引发“输入流错误”。
问题在于我不能将MB_BPMessage 转换为MB_BPRequest 或MB_BPResponse,因为编译器会抛出错误。
我有兴趣了解解决此问题的其他方法。
【问题讨论】:
标签: c++ boost boost-serialization