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.
...
我有一个根 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.
...