You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中合并Protobuf子消息到主消息字段报错,求正确实现方式

Protobuf合并子消息到主消息字段的正确方法

直接调用main_message_proto.MergeFrom(submessage_proto)报错的原因是,MergeFrom仅支持同类型消息的合并,而MainMessage和SubMessage属于不同的消息类型,无法直接合并。

正确的做法是针对MainMessage中对应的foo_3字段进行合并,代码示例如下:

proto::MainMessage main_message_proto;
proto::SubMessage submessage_proto;

// 填充submessage_proto的内容(省略具体逻辑)

// 正确合并:获取foo_3字段的可变引用后调用MergeFrom
main_message_proto.mutable_foo_3()->MergeFrom(submessage_proto);

补充说明

  • mutable_foo_3()方法会返回SubMessage类型的可变指针(因为foo_3是optional类型),此时调用同类型的MergeFrom就可以完成内容合并。
  • 如果foo_3字段之前未初始化,mutable_foo_3()会自动创建一个默认的SubMessage实例,再执行合并操作。

内容的提问来源于stack exchange,提问作者A. Fenzry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 01:10:03