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