我使用Google的ProtoBuf,我设置了很多价值,如下所示:
optional string force_sampling = 1;
optional string status = 2;
optional string host = 3;
optional string server_addr = 4;
optional string server_port = 5;
optional string client_addr = 6;
optional string request = 7;
optional string msec = 8;
optional string request_time = 9;
optional string logid = 10;
optional string request_body = 11;
optional string response_body = 12;
optional string other = 100;
因此,当我为消息设置一个值时,我会编写许多结构,如下所示:
set_logid(); set_request_body(); set_other(); set_request_body(); etc.
我可以更方便地做到这一点吗? 例如,像:
array way={"set_logid","set_other"}
for (;i = 0;i < len)
{
sample.way[i]()
}
顺便说一句,set_logid
是内联的
答案 0 :(得分:0)
您可以使用Message::GetReflection()
功能并使用它来按字符串中的名称访问字段。
文档在这里: https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.message#Reflection
但是,这会变得更慢,更复杂,所以可能不值得。