Protocol buffers protobuf C+中的二维数组+;

Protocol buffers protobuf C+中的二维数组+;,protocol-buffers,Protocol Buffers,我有一个如下的结构,它包含一些二维数组 typedef struct _MsgPixelDataHistory { int is_initialized; unsigned int user_id;; int pen; int start; int quanta_count[MAX_RETRANS]; int x[MAX_RETRANS][MAX_PIXELS_PER_QUANTA];

我有一个如下的结构,它包含一些二维数组

typedef struct _MsgPixelDataHistory {
        int is_initialized;
        unsigned int user_id;;
        int pen;
        int start;
        int quanta_count[MAX_RETRANS];
        int x[MAX_RETRANS][MAX_PIXELS_PER_QUANTA];
        int y[MAX_RETRANS][MAX_PIXELS_PER_QUANTA];
}MsgPixelDataHistory;
我定义的相应protobuf结构如下

message x_his {
        repeated int32 xh=1;
}

message y_his {
        repeated int32 yh=1;
}

message PixelDataHis {
        int32 start=1;
        bool pen=2;
        repeated x_his x=3;
        repeated y_his y=4;
}
现在我已经编写了如下所示的写和读函数,但它似乎没有正确初始化数组。size函数的readback返回1。 正确的读写方法是什么 写

PixelDataHis有效载荷;
int i,j;
有效载荷。设置启动(d->start);
有效载荷。设置笔(d->pen);
x_他的*x_发送;
你是他送的;
对于(j=0;jadd_xh(d->x[j][i]);
y_send->add_yh(d->y[j][i]);
x_send->set_xh(i,d->x[j][i]);
y_send->set_yh(i,d->y[j][i]);
}
}
std::string serializedData=payload.SerializeAsString();
阅读

payload.ParseFromString(缓冲区);
dr->dataType=PX;
dr->grpcError=0;
dr->dr.dph.pen=payload.pen();
dr->dr.dph.start=payload.start();
对于(j=0;jdr.dph.quanta_count[j]=payload.x_size();
常数x_his&xhis=有效载荷x(j);
常数y_his&yhis=有效载荷y(j);
对于(i=0;idr.dph.x[j][i]=xhis.xh(i);;
}
对于(i=0;idr.dph.y[j][i]=yhis.yh(i);
}
}
        PixelDataHis payload ;
        int i,j;

        payload.set_start(d->start);
        payload.set_pen(d->pen);

        x_his* x_send;
        y_his* y_send;

        for(j=0;j<MAX_RETRANS;j++){
                x_send=payload.add_x();
                y_send=payload.add_y();
                for(i=0;i<d->quanta_count[j];i++){
                        x_send->add_xh(d->x[j][i]);
                        y_send->add_yh(d->y[j][i]);
                        x_send->set_xh(i,d->x[j][i]);
                        y_send->set_yh(i,d->y[j][i]);
                }
        }

        std::string serializedData = payload.SerializeAsString();
        payload.ParseFromString(buffer);

        dr->dataType=PX;
        dr->grpcError=0;
        dr->dr.dph.pen=payload.pen();
        dr->dr.dph.start=payload.start();

        for(j=0;j<payload.x_size();j++){
                dr->dr.dph.quanta_count[j]=payload.x_size();
                const x_his& xhis = payload.x(j);
                const y_his& yhis = payload.y(j);
                for(i=0;i<xhis.xh_size();i++){
                        dr->dr.dph.x[j][i]=xhis.xh(i);;
                }
                for(i=0;i<yhis.yh_size();i++){
                        dr->dr.dph.y[j][i]=yhis.yh(i);
                }
        }