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


更新:在 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 回答