gpt4 book ai didi

c++ - 使用反射 google protobuf 获取枚举值

转载 作者:行者123 更新时间:2023-11-30 04:46:48 25 4
gpt4 key购买 nike

支持我在 .proto 文件中有一个枚举,例如:

enum My_Types
{
my_types_a = 0;

my_types_b = 1;

my_types_c = 2;

}

我想生成一个 EnumDescriptor 以便我可以从这个枚举中引用值,但我必须使用 Google Reflection APIs .当使用 .proto 文件的 protobuf 编译版本时,我可以说 My_Types_descriptor() 来获取 EnumDescriptor,但是我如何使用反射来做到这一点?这同样适用于可以描述特定枚举常量的 EnumValueDescriptor

给定一个 DescriptorPool ,如何使用反射来实现这一目标?我相信this API可以提供帮助,但我不知道如何使用它。

最佳答案

我要找的是这个:

const EnumDescriptor* enum_desc = Pool->FindEnumTypeByName(custom_type);

其中 Pool 是一个 google::protobuf::DescripterPool 代表定义或所有消息类型和您的协议(protocol)描述的枚举。一旦你有了EnumDescriptor,你就可以使用你的反射实例说reflection->Getint32()(或者你期望的任何其他类型)并说

const EnumValueDescriptor* enum_value_desc = enum_desc->FindValueByNumber(value);

这是给你枚举的值(value)。

关于c++ - 使用反射 google protobuf 获取枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56571289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com