FlatBuffer:如何使用可选的子结构/子表构造表

时间:2019-02-07 04:11:04

标签: flatbuffers

我有一个根表,表中有一个可选的struct / table。内部表是可选的,它可以根据其他条件构造也可以不构造。

这里是一个示例FlatBuffer schema

struct A {
    value:bool;
}

table B {
    ...
}

table C {
    ...
    a:A;
    b:B;
    ...
}

是否构造A / B是基于其他条件。

由于不允许使用FlatBufferBuilder嵌套,因此在创建{之后,我是否必须先构建它们,甚至不需要它们,然后再构建add_a / add_b {1}}是否基于其他条件?

在C ++中,我没有找到适当的方法来做到这一点。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

只是因为您按预定顺序构造对象(非嵌套)不会使可选构造产生任何不同:

flatbuffers::Offset<B> bo;  // default 0, so unused.
if (my_conditions) {
  bo = CreateB(fbb, ..);
}
Cbuilder cb;
if (my_conditions) {
  cb.add_a(A(..));  // Structs must be created inline.
}
cb.add_b(bo);  // This will not be stored if 0.
...