7

Protocol Buffer Basics : 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();

では、C++ で B::A を A インスタンスに設定する方法は?


テストファイル: .proto、生成された結果: .h.ccおよび一部の.java


Upd: Java では、ネストされたフィールドは Builder を介して設定されます: 例として上記のリンクを参照してください ( setDataを探してください)。

4

1 に答える 1

12

解決策: mutable を使用して、返された doodad を変更します。

A a;
A.set_foo(1);

B b;
B.mutable_A()->CopyFrom(a);
于 2012-06-04T04:10:55.530 に答える