flatbuffer unio仅生成枚举

时间:2019-03-15 07:44:05

标签: c++ c++11 serialization union flatbuffers

我有一个Flatbuffer模式文件:

namespace market;

enum MessageType : ubyte {
    Null = 0,
    MarketDate = 1,
    MarketInfo,
}

table MarketDate {
    date           : string;
}

table MarketInfo {
        marketID           : string;
        marketName         : string;
        marketType         : byte;
}

union MessageData {
    marketDate           :     MarketDate,
    marketInfo           :     MarketInfo,
}

table Message {
    type        : MessageType;
    data        : MessageData;
}

root_type Message;

当我为c ++生成访问文件时,

flatc -c --scoped-enums market.fbs

输出没有任何要构造和存储MessageData的代码,它仅生成一个枚举。生成的market_generated.h位于http://sprunge.us/lTfX0H

我从互联网上读到,联合会至少产生类似struct MessageDataUnioncreateMessageDataDirect之类的东西,但就我而言,它什么都不会产生,我的代码有什么问题吗? / p>

1 个答案:

答案 0 :(得分:1)

您可以通过初始化data中的Message字段来创建联合。实际上,这会在C ++中生成两个字段datadata_type。因此,您不需要联合中已经包含的type字段或MessageType枚举。

您应该能够调用类似fbb.Finish(CreateMessage(fbb, MessageData_marketDate, CreateMarketDate(fbb, fbb.CreateString("my date"))))(未经测试)之类的东西。