c++ - FlatBuffers 中的多个根表

标签 c++ serialization deserialization flatbuffers

我正在检查 Flatbuffers 以实现通信协议(protocol)。当收到一条消息时,在我的例子中它可能包含许多不同的表。如果我理解正确,在 Flatbuffers 中实现此目的的方法是使用一个“根”表,该表在 union 中具有每个可能的不同表。

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

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

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

最佳答案

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

关于c++ - FlatBuffers 中的多个根表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35937976/

相关文章:

c++ - 尝试在代码块中编译 Qt/C++ 代码

c++模板类型推导在强制转换运算符中失败

c++ - 奇怪的参数传递——这样安全吗?

c# - 尝试序列化时出现自引用循环错误

c# - 反序列化 JSON 对象与数组

java - 如何从Java中的构造函数反序列化对象?

c++ - 在 C++ 中迭代 for 循环并将迭代器与负数进行比较。 int 可以存储 unsigned int 吗?

c# - Xml序列化-集合属性

c# - 一种通用列表反序列化类?

java - jackson JSON + Java 泛型