似乎平面缓冲区的作者错过了Monster中Equipment结构的一个例子,这在这里会有所帮助。
我在根结构(MyProjectRootMessage(中有一个结构(Message(。这似乎是monster.fbs例子中的方法。
enum MyProjectMsgType : byte { Message1=0, Message2 }
union Message { Message1, Message2 }
table MyProjectRootMessage {
msg_type:MyProjectMsgType;
message:Message;
}
table Message1 {
}
table Message2 {
}
但我正试图用C++构建它,但消息类型出现了错误。它说message
是Offset<Message1>
类型,而它应该是Message
类型。
flatbuffers::FlatBufferBuilder builder;
auto message = Message1Builder(builder).Finish();
auto rootMessage = CreateMyProjectRootMessage(builder, MyProjectMsgType_Message1, message); // complains on message here
您不需要enum MyProjectMsgType
,union
已经为您生成了一个类型枚举。
Offset<Message1>
有一个方法,可以将其转换为适用于并集的通用偏移量。