【问题标题】:How to use Union Types Protobuf C++如何使用联合类型 Protobuf C++
【发布时间】:2017-03-29 03:48:58
【问题描述】:

我是使用 Protobuf 的新手。我在 C++ 中有一个服务器客户端通信 (UDP)。现在我使用 Protobuf 向服务器发送包含一些信息的消息。

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。那么我如何访问或设置名称?

任何人都可以制作一个我可以理解如何使用它的小sn-p吗?

我为我的英语能力道歉:D

Protobuf 版本:2.5.0

操作系统:Windows 环境:Visual Studio

语言:C++

来自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;
}

如何在代码中使用它?我想这就是我想要的。有人知道我在哪里可以找到一个例子吗?

【问题讨论】:

  • “谁能做一个我能理解如何使用的小sn-p?” 这不太可能发生:SO 不是代码编写服务。我建议你先尝试自己做,然后问你是否遇到具体问题。
  • @George 你的权利。这是我的错
  • 首先感谢所有花时间帮助我的人。 @user694733:问题是我不明白如何使用这样的东西。我有很多消息,我不想每次都发送空洞消息,只发送在客户端设置的消息。在 proto 文件中,我有一条消息,其中包含 vname、vnat、... 作为可选内容。但我的目标不是只发送在客户端设置的消息。我希望我能解释我的问题:D.

标签: c++ oop protocol-buffers


【解决方案1】:

听起来您正在寻找的是this,而不是使用可选字段和解决方法枚举。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 2022-10-02
    • 2022-11-25
    • 1970-01-01
    • 2020-10-15
    • 2020-01-22
    • 2012-03-17
    相关资源
    最近更新 更多