根据 flatbuffers 示例,在 c++ 上,生成 GetMonster 函数,因为 Monster 被定义为 root_type。显然 1 个模式只能有 1 个 root_type。这限制了每个模式只有 1 种类型可以直接从 buf 转换为 obj。与解包相同
而对于java来说,schema中定义的每个类型都会生成函数“getRootAs...”,非常方便。每种类型都可以直接从 ByteBuffer 轻松转换。
因此,在使用 c++ 的网络游戏用例中,有很多类型可以通过网络发送而没有直接关系。我们应该为每种类型定义一个模式文件吗?为了生成Get / Unpack?
PS我知道我可以自己做
auto nonRootCustomTypeObj = flatbuffers::GetRoot<NonRootCustomType>(fbb.GetBufferPointer());
但想知道为什么这种 Get/Unpack 转换功能不适用于所有类型,但仅适用于 c++ 中的 root_type?