如何使用联盟类型Protobuf C++
问题描述:
我是使用Protobuf的新手。我在C++中有一个服务器客户端通信(UDP)。现在我使用Protobuf向服务器发送包含一些信息的消息。如何使用联盟类型Protobuf C++
package Test;
message vName{
required int32 name = 1;
}
message vNat{
required int32 nat = 1;
}
message vTan{
required int32 tan = 1;
}
message Test{
enum Type { vName = 1; vNAT = 2; vTAN = 3;}
required Type type = 1;
optional vName name = 2;
optional vNat nat = 2;
optional vTan tan = 2;
}
现在我想只发送其设置的信息。例如类型是1.那么我如何访问或设置名称?
任何人都可以做一个小片段,我可以理解如何使用它?
我为我的英语技能道歉:d
的Protobuf版本:2.5.0
操作系统:Windows 环境:Visual Studio中
语言:C++
From https://developers.google.com/protocol-buffers/docs/techniques#union 您可能还需要有识别该消息填充枚举场,让你可以在上面进行切换:
message OneMessage {
enum Type { FOO = 1; BAR = 2; BAZ = 3; }
// Identifies which field is filled in.
required Type type = 1;
// One of the following will be filled in.
optional Foo foo = 2;
optional Bar bar = 3;
optional Baz baz = 4;
}
我怎样才能在代码中使用此?我认为这是我想要的。有没有人有一个想法,我可以找到一个例子?
*“任何人都可以制作一个小片段,我可以理解如何使用它?”*不太可能发生这种情况:SO不是代码编写服务。我建议你先尝试自己做这件事,然后询问你是否遇到了特定的问题。 – user694733
@乔治你的权利。这是我的错 – SDE
首先感谢所有花时间帮助我的人。 @ user694733:问题是我不明白如何使用这样的东西。我有很多消息,我不想每次发送空洞消息只发送客户端设置的消息。在proto文件中,我有一个消息,其中包含vname,vnat,...作为可选项。但是我的目标不是只发送在客户端设置的消息。我希望我能解释我的问题:D。 – SDE