Создайте составные сообщения Protobuf в C ++ - PullRequest
0 голосов
/ 24 октября 2019

Учитывая следующие типы сообщений 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, есть ли более прямой путь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...