Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从C+中的协议缓冲区读取重复字段时出现问题+;_C++_Protocol Buffers - Fatal编程技术网

C++ 从C+中的协议缓冲区读取重复字段时出现问题+;

C++ 从C+中的协议缓冲区读取重复字段时出现问题+;,c++,protocol-buffers,C++,Protocol Buffers,org.proto message Optimize { required int element_size = 1; required string element_name = 2; } message nodes { repeated Optimize = 1; } 具有此解码功能: DecodeNodeMsg(char *msg, int size) { Org::nodes node; int element_size; strin

org.proto

message Optimize {
    required int element_size = 1;
    required string element_name = 2;
}

message nodes {
    repeated Optimize = 1;
}
具有此解码功能:

DecodeNodeMsg(char *msg, int size)
{

    Org::nodes node;
    int element_size;
    string element_name;
    int NumofElem = 0;

    node.ParseFromArray((void *)msg, size);

    for (int i = 0; i < nodes.Optimize().size(); i++)
    {
        element_size = nodes.Optimize(i).element_size();
        element_name = nodes.Optimize(i).element_name();
        cout << "size" << element_size << endl;
        cout << "name" << element_name << endl;
        NumofElem++;
    }
    cout << "number of" << NumofElem << endl;
}
DecodeNodeMsg(字符*msg,整数大小)
{
Org::nodes节点;
int元素的大小;
字符串元素名称;
int NumofElem=0;
ParseFromArray((void*)消息,大小);
对于(int i=0;icout我看不出您实际上在哪里解码消息。我看到您创建了一个新的节点对象,但随后调用Org::nodes(),这看起来是错误的。我认为您需要访问如下优化元素:

for (int i = 0; i < node->optimize_size(); i++)
{
    element_size = node->optimize(i).element_size();
    element_name = node->optimize(i).element_name();
    cout << "size" << element_size << endl;
    cout << "name" << element_name << endl;
    NumofElem++;
}

该函数将缓冲区反序列化为局部变量节点,但循环引用节点。我还将验证ParseFromArray的返回值。

您提到的三个都是问题中的键入错误。我有一个ParsingFromArray函数,节点是局部变量,因此nodes.optimize()很好,而且我有消息的每个字段。已经更新了这个问题。抱歉给您带来不便,请提供代码,编译和演示错误。代码现在您没有编译-至少,<代码>。PROTTO
语法无效,我对C++的顶部有疑问。那个
 message nodes {
   repeated Optimize = 1;
 }