是否可以从描述符构造一个空消息?

时间:2015-12-04 17:08:07

标签: c++ protocol-buffers

也就是说,给定一个Descriptor,是否可以构造相应的空Message等同于在类上调用default_instance()?我不需要实际的子类型,我只需要抽象Message

特别是我有兴趣枚举protobuf文件中所有Message的实例,但使用API​​我只能枚举所有Descriptor个。{/ p>

1 个答案:

答案 0 :(得分:1)

您正在寻找的界面是MessageFactory。给定Descriptor,它可以为您提供该类型的默认实例。 (您可以在默认实例上调用message->New()以获取新的可变实例。)

MessageFactory有两种主要类型。如果您感兴趣的类型被编译到程序二进制文件中,那么您希望使用MessageFactory::generated_factory(),它返回一个实例化编译类型的MessageFactory

如果没有编译类型,那么您将要创建一个DynamicMessageFactory,它能够构建一个Message,表现得像任意类型 - 但请注意,由于动态性,使用此实例将比编译类型慢(很像解释语言比编译语言慢)。