【问题标题】:Protobuf: how nested (custom) optional fields are to be handled in C++?Protobuf:如何在 C++ 中处理嵌套(自定义)可选字段?
【发布时间】:2012-06-04 03:45:25
【问题描述】:

读入Protocol Buffer Basics: C++,没有找到符合情况的:;用--cpp_out处理以下.proto

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)。

【问题讨论】:

    标签: c++ protocol-buffers


    【解决方案1】:

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

    A a;
    A.set_foo(1);
    
    B b;
    B.mutable_A()->CopyFrom(a);
    

    【讨论】:

      猜你喜欢
      • 2017-07-26
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      相关资源
      最近更新 更多