我正在检查Flatbuffers以实现通信协议。收到消息时,在我的情况下可能包含许多不同的表。如果我理解正确,在Flatbuffers中实现这一点的方法是使用一个“根”表,它在联合中包含每个可能的不同表。
就我而言,我已经知道传入类型(类型是标题的一部分)=>我不一定需要能够将每种类型放在一个表中。但是,似乎不可能将多个表标记为“根”类型。这意味着如果我已经定义了表Foo
和Bar
,我只能获得用于反序列化的GetFoo()
或GetBar()
方法,但不能同时获得这两种方法。
我假设也可以将定义拆分到不同的模式文件中,但由于它们将共享一些子类,因此我还需要一个共享模式文件来进行常见定义。对于简单的情况,这似乎有点复杂。
是否有其他方法可以使用Flatbuffers反序列化多个不同类型?
答案 0 :(得分:2)
是的,你可以这样做。请注意,生成的GetMyType()
只是模板GetRootAs<MyType>
的缩写,您可以将其用于任何类型。