Я сделал простой файл protobuf, чтобы воспроизвести мою проблему:
syntax = "proto3";
package proto;
message Test {
uint32 test1 = 1;
oneof param {
uint32 test2 = 2;
bool test3 = 3;
}
}
Когда я генерирую код С++, функция-член oneof has_param()
является закрытой. Это нормально? Как узнать, установлен ли oneof?
Кстати пробовал с protobuf 3.12.4 и 3.21.9 результат тот же.
См. документацию для сгенерированного кода Protobuf C++.
Генератор создает метод param_case()
, который возвращает тип перечисления, определяющий, какое поле внутри oneof
присутствует. Если oneof
пусто, возвращается PARAM_NOT_SET
.
Тем не менее мне кажется странным, что все остальные параметры имеют это поле общедоступным, но не поля
oneof
.