буферы протокола получают EnumDescriptor *

#c #c 11 #enums #protocol-buffers

#c #c 11 #перечисления #буферы протокола

Вопрос:

У меня есть перечисление UpdateType в моем сообщении буферов протокола

Я хочу изменить его, используя отражения, для этого мне нужен EnumDescriptor.

Документация по буферам протокола Google гласит

 #include <google/protobuf/descriptor.h>
namespace google::protobuf

Describes an enum type defined in a .proto file.

To get the EnumDescriptor for a generated enum type, call TypeName_descriptor(). Use DescriptorPool to construct your own descriptors.
  

Как я могу получить EnumDescriptor? где функция TypeName_descriptor()?

Комментарии:

1. У меня был тот же вопрос, я поддержал вопрос. Вызвано глупым комментарием в Google protobuf. Зачем давать неверную информацию?

Ответ №1:

Вы можете получить enum_descriptor из FieldDescriptor.

Просто используйте FieldDescriptor::enum_type(), чтобы получить EnumDescriptor*

Надеюсь, это поможет!!

Комментарии:

1. Опечатка в вашем ответе, вы имеете в виду: FieldDescriptor::enum_type()

2. Это помогло, и я поддержал ваш ответ, а также вопрос.