簡體   English   中英

Protobuf:如何在C ++中處理嵌套(自定義)可選字段?

[英]Protobuf: how nested (custom) optional fields are to be handled in C++?

閱讀協議緩沖區基礎:C ++ ,沒有發現任何符合這種情況: 使用--cpp_out處理以下--cpp_out

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

沒有明顯的生成訪問器/ setter來設置自定義可選字段(包括'嵌套類型'部分,我懶得放在這里):

   // 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();

那么, 如何在C ++中將B :: A設置為某個A實例?


測試文件.proto ,生成結果: .h.cc和一些.java


Upd:在Java中,嵌套字段通過Builder設置:例如,參見上面的鏈接(查找setData )。

解決方案:使用mutable修改一些返回的doodad。

A a;
A.set_foo(1);

B b;
B.mutable_A()->CopyFrom(a);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM