Как я могу очистить один случай в protobuf?

Учитывая этот основной прото:

syntax = "proto3";
message Foo {
oneof cases {
bool a = 1;
bool b = 2;
// ...
}
}

Я хотел бы очистить все поля в cases такой, что foo.cases_case() == CASES_NOT_SET (в C ++ не уверен, что это доступно для других языков). Следующий [некрасивый] обходной путь делает то, что я хочу:

// Given Foo foo;
foo.set_a(false);
foo.clear_a();

Я также могу очистить все случаи, но это может привести к ошибкам при добавлении новых случаев:

foo.clear_a();
foo.clear_b();
// Oops, forgot foo.clear_c();

Глядя на сгенерированный код, есть частный метод, который делает именно то, что я хочу, и я не уверен, почему это не может быть выставлено: Foo::clear_cases(), Есть ли какая-то причина, почему это не должно быть разрешено, или способ, которым я могу сделать это, не завися от конкретного случая, чтобы установить / очистить?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]