FlatBuffer:如何使用可选的 sub-struct/sub-table 构建 table

FlatBuffer: how to construct a table with an optional sub-struct/sub-table

我有一个根 table 并且在 table 中有一个可选的 struct/table。内部 table 是可选的——它可能会也可能不会根据其他条件构建。

这是一个例子FlatBuffer schema

struct A {
    value:bool;
}

table B {
    ...
}

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

是否构建A/B还要看其他条件

既然不允许使用FlatBufferBuilder嵌套,我是不是必须先构建它们,即使它们不需要,然后add_a/add_b很晚,之后根据其他条件创建Cbuilder?

在 C++ 中,我没有想出正确的方法来做到这一点。任何帮助表示赞赏!

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

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.
...