在使用protobuffer时,如果定义一个消息如下:
enum my_enum
{
enum_type1 =1,
enum_type2 =2
}
message my_msg
{
required my_enum test_enum = 1
}
那么,在protoc生成的代码中,在赋值时 set_test_enum(const my_enum value) 的第一行代码会进行判断,判断value是否为对应的枚举数值,否则,会报错。
同时,在c++中,以前认识存在一个误区,就是例如
enum my_enum
{
enum_type1 =1,
enum_type2 =2
}
my_enum value = static_cast<my_enum>(value1); // 如果value1是1,2正常,如果是其他数值,之前认为会转到对应的区域,但是,实际上不是这样子的,他保存的数值还是value1对应的数值