Учитывая следующие типы сообщений protobuf,
message Simple {
optional double value = 1;
}
message Compound {
optional Simple simple = 1;
}
единственный способ найти инициализацию сообщения типа Compound
в C ++ состоял в том, чтобы сделать следующее довольно трудоемким:
Compound compound;
Simple* simple_ptr = compound.mutable_simple();
simple_ptr->set_value(1.0);
Хотя это может показаться не ужасным, предположим, что вы сделали пример немного более реалистичным, сделав Simple
содержащим 3 double
с, а Compound
- 2 Simple
с. Код становится очень повторяющимся, очень быстрым, на первый взгляд (для меня) совершенно ненужным способом. Если бы классы были стандартными классами C ++, создание экземпляров было бы очень простым:
Compound compound(Simple(a, b, c), Simple(x, y, z));
Интересно, есть ли более удобный способ создания сообщений protobuf. Мне особенно любопытно использовать для этой цели методы get_mutable
, есть ли более прямой путь?