我想序列化std :: error_code,通过网络传输并再次反序列化。无论如何要做到这一点,或者我需要一个翻译表(开关柜),它将整数值映射到/从std :: error_code?C++ serialize std :: error_code通过网络传输或保存到磁盘?
int encode_error(const std::error_code& ec);
std::error_code decode_error(int value);
谢谢。
我想序列化std :: error_code,通过网络传输并再次反序列化。无论如何要做到这一点,或者我需要一个翻译表(开关柜),它将整数值映射到/从std :: error_code?C++ serialize std :: error_code通过网络传输或保存到磁盘?
int encode_error(const std::error_code& ec);
std::error_code decode_error(int value);
谢谢。
甲std::error_code
是两件事情的组合:
要在一般情况下序列化它们是非常困难的,因为您需要知道可能使用的所有可能的类别,然后传输哪个类别与该值一致是适当的。接收者然后需要在本地查找匹配的类别并使用它从中创建错误代码。
更简单的情况是获取消息,类别名称和错误值,并发送该消息。把它转换回error_code是不切实际的,但根据你的用例,这可能就足够了。
如果您想从您控制的自定义类别中序列化error_codes更简单,因为您不需要确定错误来自哪个类别,所以对其进行序列化应该是微不足道的。
对于有关不存在其他情况的部分, t必须转换回error_code。 –
您需要使用std::error_condition
,这是一个便携式错误代码。
[boost :: serialization](http://www.boost.org/doc/libs/1_34_0/libs/serialization/doc/index.html) – user1810087