Protobuf:如何在C++中处理嵌套(自定义)可选字段
Protobuf: how nested (custom) optional fields are to be handled in C++?
读入协议缓冲区基础知识: C++,没有发现任何与情况匹配的内容:; 使用以下 .proto 处理--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
更新:在Java中,嵌套字段是通过Builder设置的:例如,请参阅上面的链接(查找setData)。
解决方案:使用 mutable 修改一些返回的涂鸦。
A a;
A.set_foo(1);
B b;
B.mutable_A()->CopyFrom(a);
相关文章:
- C++:用户定义的类,以成员字段作为地址
- 我们可以在套接字编程中将自定义数据作为辅助数据发送吗?
- 使用 Boost::Hana 中的 BOOST_HANA_DEFINE_STRUCT 定义具有 40 个以上字段的结构
- 在类中定义数组的方法和字段
- 将字段(在类中)定义为引用的缺点是什么?
- 通过套接字发送的自定义数据包
- 在 boost::asio 中自定义套接字/关闭系统调用
- 如何在消息文件中获取用户定义的字段
- 使用谷歌协议缓冲区 - 如何在.proto文件中定义字段
- 为什么使用最大位字段序列定义C++内存?
- 使用 boost::geometry::追加时,自定义点类中的 ID 字段间歇性丢失
- 在 C++ 中填充重复的自定义协议缓冲区字段
- 正在取消引用自定义结构字段的迭代器
- 谷歌协议缓冲区,如何设置自定义类型的字段
- 按一个字段对自定义对象向量进行排序
- ID 字段在自定义点类中间歇性丢失
- std::map与字符串键和自定义值字段
- Protobuf:如何在C++中处理嵌套(自定义)可选字段
- 在实例变量中定义字段会使所有实例字段相同
- 应该将SFML RenderWindow继承到自定义渲染类中,还是将其作为字段