c++ - 将 google::protobuf::RepeatedField<float> 转换为 float

标签 c++ protocol-buffers

我正在使用 Google 的 Protobuf 创建一个名为 Foo 的 C++ 类,如下:

message Foo
{
    optional int32 x = 1;
    repeated float y = 2;
}

在创建的C++类中,这创建了一个成员变量y类型 const google::protobuf::RepeatedField<float> 。现在,在我的 C++ 代码中,我想访问 xy Foo 实例的变量,称为 foo 。在此示例中,y长度为一,即它包含一个 float :

int a = foo.x();
float b = foo.y();
float c = foo.y()[0];

在这里,第一行有效,但第二行和第三行都出现错误。我只是想获取存储在 y 中的这个 float 的值.

我应该怎么做?

谢谢!

最佳答案

你想要:

float b = foo.y(0);

(堆栈溢出提示我的答案太短......)

关于c++ - 将 google::protobuf::RepeatedField<float> 转换为 float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32874292/

相关文章:

c++ - STL 排序保留原始顺序

c++ - 在不使用循环的情况下,将 ISBN-10 的前 9 位数字作为字符串读取并计算第 10 位数字

python - 将二进制文件转换为 proto 文件

java - Gradle 禁用所有增量编译和并行构建

c++ - 是否在兼容模式下运行的程序

c++ - 在不知道确切名称的情况下读取文件夹中的图像

c++ - 如何限制通过 cin 输入的字符数?

Android protobuf - 从其中包含单个 GUID 的响应中解析 GUID

javascript - 错误 : Illegal wire type for field Message. 字段 .protobuf.MessageTypeAck.sourceModuleID:1(预期为 0)

go - 为什么解码此 API 响应会返回意外的 EOF?