Protobuf: как обрабатывать вложенные (настраиваемые) необязательные поля в C++?

Чтение в Основы буфера протокола: C++, не нашел ничего, что соответствовало бы ситуации:; со следующим .proto, обработанным с помощью --cpp_out,

message A {
 required int32 foo = 1;
}
message B {
 optional A data = 1;
}

не создается явно выглядящий метод доступа/сеттер для установки настраиваемого необязательного поля (включая раздел «вложенные типы», который я тоже лень писать сюда):

   // accessors -------------------------------------------------------

   // optional .A = 1;
   inline bool has_a() const;
   inline void clear_a();
   static const int kAFieldNumber = 1;
   inline const ::A& a() const;
   inline ::A* mutable_a();
   inline ::A* release_a();

Итак, как установить B::A в некоторый экземпляр A в C++?


TEST FILES: .proto, сгенерированные результаты: .h, .ccи некоторые .java


Upd: в Java вложенные поля устанавливаются через Builder: например, см. ссылку выше (ищите setData).

6
задан kagali-san 4 June 2012 в 03:52
поделиться