RecursiveFrog 发表于 2022-4-2 20:29

protobuf父子嵌套结构的使用

protobuf作为常用的消息形式,其中数据类型的嵌套使用是不可避免的。
大概有两种大类,三种形式将子结构赋值到父结构中。
如下:

//第一类:
syntax = "proto3";
package test;

message data {
string content = 1;
int32 age=2;
bool isOld=3;
}

message person_message
{
        data info_data=1;
}

//第二类:
syntax = "proto3";
package test;

message data {
string content = 1;
int32 age=2;
bool isOld=3;
}

message person_message
{
        repeated ata info_data=1;
}第一类中有两种赋值方式:
//方式1
peron_message person;
//子结构赋值
data *pData;
pData->set_content("nihao");
pData->set_age(12);
pData->set_isOld(10);
//装载到父结构中
person.set_allocated_data(pData);

//方式2
peron_message person;
//子结构赋值
data Data;
Data.set_content("nihao");
Data.set_age(12);
Data.set_isOld(10);

person.mutable_data().CopyFrom(Data);第二类的赋值方式如下:

//
person_message person;

data* pData=person.add_data();
pData->set_content("nihao");
pData->set_age(12);
pData->set_isOld(10);
本着自己申请的内存自己释放的原则,set_allocated的方法不太好,帮助释放了内存。
页: [1]
查看完整版本: protobuf父子嵌套结构的使用