flatbuffers

时间:2016-03-11 10:38:21

标签: c++ serialization deserialization flatbuffers

我正在检查Flatbuffers以实现通信协议。收到消息时,在我的情况下可能包含许多不同的表。如果我理解正确,在Flatbuffers中实现这一点的方法是使用一个“根”表,它在联合中包含每个可能的不同表。

就我而言,我已经知道传入类型(类型是标题的一部分)=>我不一定需要能够将每种类型放在一个表中。但是,似乎不可能将多个表标记为“根”类型。这意味着如果我已经定义了表FooBar,我只能获得用于反序列化的GetFoo()GetBar()方法,但不能同时获得这两种方法。

我假设也可以将定义拆分到不同的模式文件中,但由于它们将共享一些子类,因此我还需要一个共享模式文件来进行常见定义。对于简单的情况,这似乎有点复杂。

是否有其他方法可以使用Flatbuffers反序列化多个不同类型?

1 个答案:

答案 0 :(得分:2)

是的,你可以这样做。请注意,生成的GetMyType()只是模板GetRootAs<MyType>的缩写,您可以将其用于任何类型。