我正在检查用于实现通信协议的Flatbuffers。当接收到消息时,在我的示例中,它可能包含许多不同的表。如果我正确理解,那么在Flatbuffers中实现这一目的的方法是使用一个"root“表,该表在一个联合中具有每个可能不同的表。
在我的例子中,我已经知道传入类型(类型是标头的一部分) =>,我不一定需要能够将每个类型放在一个表中。但是,似乎不可能将多个表标记为“根”类型。这意味着,如果我已经定义了表Foo和Bar,那么我只能获得反序列化的GetFoo()或GetBar()方法,但两者都不能。
我假设也可以将定义拆分到不同的模式文件中,但是由于它们将共享一些子类,所以我还需要一个共享的模式文件来处理常见的定义。对于简单的情况来说,这似乎比必要的要复杂一些。
还有另一种方法可以用Flatbuffers反序列化多个不同的类型吗?
发布于 2016-03-11 16:39:11
是的,你能做到的。请注意,生成的GetMyType()只是模板化GetRootAs<MyType>的缩写,您可以将其用于任何类型。
https://stackoverflow.com/questions/35937976
复制相似问题