取protoubf字段时有的字段取不到

麦田听雨声 发布于 2017/04/25 16:22
阅读 71
收藏 0

定义protobuf如下;
message Mypb
{
Exch exch = 1; 
string id = 3; 
double weight = 4; 
uint32 index = 18; 
}
enum Exch
{
BJ = 0;
TJ = 1;
NJ = 2;
}
代码为;

void Function((google::protobuf::Message&)msg)
{
const Descriptor* descriptor = msg.GetDescriptor(); 
const Reflection* reflection = msg.GetReflection(); 
const uint count = descriptor->field_count();
std::cout<<"count= "<<count<<std::endl;
for (int i = 1; i <= count; ++i) 

const FieldDescriptor* goal_field = descriptor->FindFieldByNumber(i); 
if(nullptr==goal_field)
{
continue;
}
std::cout<<"goal_field->name(): "<<goal_field->name();
}
}
int main()
{
Mypb tmp_comp;
tmp_comp.set_id("12345");
tmp_comp.set_weight(122.43);
tmp_comp.set_index(231321);
tmp_comp.set_exch(static_cast< Exch >(2));
Function((google::protobuf::Message&)tmp_comp);
}
不知道为什么执行上面代码之后,Function函数输出的 count=3
goal_field->name():id
goal_field->name():exch
goal_field->name():index
没有输出weight
count不应该是4吗?为什么会出现这种问题?哪位大神知道请指教,谢谢了。

加载中
返回顶部
顶部