2013-10-23 44 views
0

我想序列化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); 

谢谢。

+0

[boost :: serialization](http://www.boost.org/doc/libs/1_34_0/libs/serialization/doc/index.html) – user1810087

回答

1

std::error_code是两件事情的组合:

  1. 的整数值(通常从某种类型的枚举映射);和
  2. 指向生成它们的类别的指针。

要在一般情况下序列化它们是非常困难的,因为您需要知道可能使用的所有可能的类别,然后传输哪个类别与该值一致是适当的。接收者然后需要在本地查找匹配的类别并使用它从中创建错误代码。

更简单的情况是获取消息,类别名称和错误值,并发送该消息。把它转换回error_code是不切实际的,但根据你的用例,这可能就足够了。

如果您想从您控制的自定义类别中序列化error_codes更简单,因为您不需要确定错误来自哪个类别,所以对其进行序列化应该是微不足道的。

+0

对于有关不存在其他情况的部分, t必须转换回error_code。 –