我要旅行的字段已在未知protobuf消息中设置。 我尝试过
for (int i = 0; i < chk_des->field_count(); ++i) {
const ::google::protobuf::FieldDescriptor* chk_field = chk_des->field(i);
(do somethin...)
}
它只是在所有领域旅行。我想去旅行的领域。
答案 0 :(得分:0)
您获取反射对象:
virtual const Reflection *
Message::GetReflection() const
获取此消息的反射界面,该界面可用于 动态读取和修改消息的字段(换句话说, 而在编译时不知道消息类型。
之后,您可以使用例如:
virtual bool Reflection::HasField(const Message & message, const FieldDescriptor * field) const = 0
检查是否设置了给定的非重复字段。
因此请注意,您还需要传递代码段中的字段描述符。
const FieldDescriptor *
Descriptor::field(
int index) const
按索引获取一个字段,其中0 <= index
这些文件将按照在.proto文件中定义的顺序返回。