我有一个根表,表中有一个可选的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 ++中,我没有找到适当的方法来做到这一点。任何帮助表示赞赏!
答案 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.
...