2015-12-07 4 views
0

Я использую Google, Protobuf и я установил много значения, как в следующем:Как написать встроенный массив 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

@fycth спасибо! –

ответ

0

Вы можете использовать функцию Message::GetReflection() и использовать его, чтобы получить доступ к полям по имени, данному в строке.

Документация находится здесь: https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.message#Reflection

Однако это получится медленнее и сложнее, поэтому он не может быть стоит.

Смежные вопросы