阅读 Protocol Buffer Basics: C++,发现没有任何符合情况:使用–cpp_out处理以下.proto, message A { required int32 foo = 1;}message B { optional A data = 1;} 没有明显的生成访问器/ setter来设置自定义可选字段
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();
那么,如何将B :: A设置为C中的某个A实例?
测试文件:.proto,生成结果:.h,.cc和一些.java
Upd:在Java中,嵌套字段通过Builder设置:例如,参见上面的链接(查找setData).
解决方案:使用mutable修改一些返回的doodad.A a; A.set_foo(1); B b; B.mutable_A()->CopyFrom(a);