使用protobuf序列化boost :: variant

时间:2018-11-23 15:39:11

标签: c++ serialization boost protocol-buffers variant

我必须序列化包含std::queue的{​​{1}}。变体大约有20种不同的结构。 在proto3中表示变体的更好/更好的方法是什么?我的意思是,我应该使用boost::variant还是oneof? 他们的表现如何?

我不问该怎么做,我不知道什么是最佳解决方案。

1 个答案:

答案 0 :(得分:0)

从相反的方向开始。您编写一个.proto文件,该文件定义(使用Google的protobuf模式语言)您要定义的“消息”。其中之一可以是包含许多其他内容的“一个”。然后,您使用Protocol Buffers编译器编译该.proto文件,最后得到C ++源代码,该源代码将这些消息实现为从基类库派生的C ++类。这些类具有内置的序列化例程。您绝对不会使用Boost或手写的C ++类。

Boost :: variant很可能等同于protobuf的“ oneof”,但是您不会用它包含不同的protobuf消息,因为这就是“ oneof”为您服务的内容。将Boost ::: variant与GPB自己的处理方式混合在一起可能会要求混淆代码。