【问题标题】:Deserialize flatbuffers binary that represents non-root table反序列化表示非根表的 flatbuffers 二进制文件
【发布时间】:2025-12-08 05:50:01
【问题描述】:

是否可以反序列化表示非根表的二进制 flatbuffers 对象?

假设以下 flatbuffers 架构:

table Foo {
    ...
}
table Bar {
    value:[Foo];
}
root_type Bar;

假设我们可以访问表示Foo 对象的二进制数据。是否可以将此二进制文件反序列化为Foo 类的对象?查看我的 c++ 生成的头文件,我没有看到任何生成的函数,例如 GetFoo()

【问题讨论】:

    标签: c++ deserialization flatbuffers


    【解决方案1】:

    GetFoo 只是声明的root_type 调用GetRoot<Foo> 的便利函数,您可以使用GetRoot<Bar> 作为根访问任何类型,假设缓冲区是这样构造的。

    【讨论】:

    • 哦,这很尴尬。太感谢了。您的回答促使我再次查看文档并在教程中找到此评论:“GetMonster 是一个调用 GetRoot<Monster> 的便捷函数,后者也可用于非 root 类型。”