我是协议缓冲区和C++的新手,所以这可能是一个基本问题,但我没有找到答案的运气.基本上,我想要在我的.proto文件中定义的字典的功能,如enum.我正在使用协议缓冲区来发送数据,我想定义单位及其各自的名称.一个enum允许我定义单位,但我不知道如何将人类可读的字符串映射到那个.
作为我的意思的一个例子,该.proto文件可能看起来像:
message DataPack {
// obviously not valid, but something like this
dict UnitType {
KmPerHour = "km/h";
MiPerHour = "mph";
}
required int id = 1;
repeated DataPoint pt = 2;
message DataPoint {
required int id = 1;
required int value = 2;
optional UnitType theunit = 3;
}
}
Run Code Online (Sandbox Code Playgroud)
然后有类似创建/处理消息的东西:
// construct
DataPack pack;
pack->set_id(123);
DataPack::DataPoint pt = pack.add_point();
pt->set_id(456);
pt->set_value(789);
pt->set_unit(DataPack::UnitType::KmPerHour);
// read values
DataPack::UnitType theunit = …Run Code Online (Sandbox Code Playgroud)