首页 > 解决方案 > 如何取回悬挂的物体

问题描述

我正在处理一个需要将 FlatBuffers 分成许多小块的大数据项目。我遇到了一些这样的情况。

架构:

table A {
  number: int;
}
table B {
  a: [A];
}

root_type B

代码:

flatbuffers::FlatBufferBuilder builder;
int num0 = 3;
int num1 = 1;
int num2 = 5;
int num3 = 7;
auto a0 = CreateA(builder, num0);
auto a1 = CreateA(builder, num1);
auto a2 = CreateA(builder, num2);
auto a3 = CreateA(builder, num3);

std::vector<flatbuffers::Offset<A>> A_vector;
A_vector.push_back(a0);
A_vector.push_back(a1);

auto B = builder.CreateVector(A_vector);
auto orc = CreateB(builder, B);
builder.Finish(orc);

如果由于某些原因我无法将 a2 和 a3 推回A_vector,那么在这种情况下,a2 和 a3 也会被序列化吗?通过 序列化后如何取回 a2 和 a3 builder.GetBufferPointer()?谢谢你的帮助。

标签: serializationflatbuffers

解决方案


如果您在 FlatBuffer 中序列化一个对象并且不将其偏移量存储在任何地方,则无法访问它。您需要将其序列化为不同的 FlatBufferBuilder 实例。


推荐阅读