我们有以下protobuf定义
message SubMessage {
optional string var_1 = 1;
repeated string var_2 = 2;
}
message MainMessage {
repeated Foo1 foo_1 = 1;
repeated Foo2 foo_2 = 2;
optional SubMessage foo_3 = 6;
}
尝试将此子原型合并为主原型的一部分时
proto::MainMessage main_message_proto;
proto::SubMessage submessage_proto;
...
main_message_proto.MergeFrom(submessage_proto);
出现以下错误:Tried to merge messages of different types
将子消息的信息合并为主消息的字段的正确函数是什么?
1条答案
按热度按时间ivqmmu1c1#
MergeFrom
合并两个相同类型的消息。例如,如果一个MainMessage
设置了foo_1
字段,另一个设置了foo_2
字段,则可以将它们合并在一起,结果将是同时设置了foo_1
和foo_2
字段的消息。但这并不是你现在看到的,你有一个
MainMessage
,想把它的SubMessage
字段和另一个SubMessage
合并,为此你需要在foo_3
上调用MergeMessage
:如果
foo_3
当前为空,则不需要使用MergeFrom
,在这种情况下,简单赋值即可: