C++ 不同的数据包,联合-是否正确使用\verify?

C++ 不同的数据包,联合-是否正确使用\verify?,c++,flatbuffers,C++,Flatbuffers,Documentation有一个简单的示例“序列化非序列化”和一个数据包。(我没有找到更多的例子) 如果我有许多数据包结构,我需要使用union?还是这个坏主意 在程序中使用收入包之前,我需要如何验证收入包 方法验证-验证数据包所需的一切?(结构正确,允许使用字段) 尝试将map[body\u type](body)(不确定该操作的目的是什么?)替换为if(body\u type==PacketBody\u body1){…reinterpret\u cast(body)…} 此外,验证器用于检

Documentation有一个简单的示例“序列化非序列化”和一个数据包。(我没有找到更多的例子)

如果我有许多数据包结构,我需要使用union?还是这个坏主意

在程序中使用收入包之前,我需要如何验证收入包

方法验证-验证数据包所需的一切?(结构正确,允许使用字段)


尝试将
map[body\u type](body)
(不确定该操作的目的是什么?)替换为
if(body\u type==PacketBody\u body1){…reinterpret\u cast(body)…}


此外,验证器用于检测数据损坏,如果您有正确的数据包,我不会使用它进行测试。

您不需要重复标题上写的内容,正如第一段所述,在问题中添加标题是有效的,我更喜欢看到“标题中的问题”之类的内容。但是,第一段不应仅包含标题;请参阅的“在发布任何代码之前介绍问题”部分。(标题是一个引人注目的摘要,而段落应该解释细节。)如果写一个更完整的摘要会导致问题的措辞有所改变,那就更好了。对不起,我扩展了我的问题谢谢你的回答,我将我的问题扩展到了对其表述的评论上。“测试”是什么意思?方法验证只检查结构,不检查允许的字段?(因此,使用地图[车身类型](车身)是不安全的)?
include "body1.fbs";
include "body2.fbs";

union PacketBody {
   body1,
   body2
}

table Packet {
   body: PacketBody
}

root_type Packet;
auto request = Packet::GetPacket(&buf);
auto ver = new flatbuffers::Verifier(buf, len);
if(request->Verify(*ver) {
   //good ?
   auto body = request->body();
   auto body_type = request->body_type();
   map[body_type](body);
} else {
   //wrong packet
}