我是protobuf的新手,我遇到了简单的任务:我需要遍历消息字段并检查它的类型.如果type是message,我将以递归方式为此消息执行相同操作.
例如,我有这样的消息:
package MyTool;
message Configuration {
required GloablSettings globalSettings = 1;
optional string option1 = 2;
optional int32 option2 = 3;
optional bool option3 = 4;
}
message GloablSettings {
required bool option1 = 1;
required bool option2 = 2;
required bool option3 = 3;
}
Run Code Online (Sandbox Code Playgroud)
现在,要在C++中显式访问字段值,我可以这样做:
MyTool::Configuration config;
fstream input("config", ios::in | ios::binary);
config.ParseFromIstream(&input);
bool option1val = config.globalSettings().option1();
bool option2val = config.globalSettings().option2();
Run Code Online (Sandbox Code Playgroud)
等等.当有大量字段时,这种方法不方便.
我可以通过迭代执行此操作并获取字段的名称和类型吗?我知道有类型的描述符,有些叫反射,但我的尝试没有成功.有人可以给我一些代码示例吗?
谢谢!