0
我使用谷歌的protobuf库版本2.61和想使用扩展,的Protobuf C++的扩展使用
我有以下的原文件:
package communication;
message BaseMessage {
required uint64 server_id = 1;
required string uuid = 2;
required uint64 message_id = 3;
extensions 100 to max;
}
message GetIdentify {
extend BaseMessage {
optional GetIdentify message = 100;
}
required string hostname = 1;
}
我能够使用来构建信息如下代码:
communication::BaseMessage base_message;
base_message.set_message_id(123456);
base_message.set_server_id(112313123);
base_message.set_uuid("asdaskdjasd213123123asd");
base_message.MutableExtension(communication::GetIdentify::message)->set_hostname("http://test123123123ing");
不过,我想这样做相反的动作,并与认识的扩展得到消息并解析它,发现它是一个扩展,并根据其解析。
我已经为我的c项目和python版本使用nanopb。但我发现在C++中编写protobuf代码非常困难,因为我找不到足够好的文档和代码示例。
有没有办法做到这一点,而无需添加额外的扩展类型的变量?
还什么是最优雅的方式在C++中
好的,谢谢你,所以通过唯一的选择是每次都遍历所有类型的扩展存在,直到找到扩展名为止? – RythemOfTheDay
此外,你可以添加枚举字段'type'到基本消息,指示实际消息的类型。 –