【发布时间】:2011-02-11 12:55:51
【问题描述】:
我正在从二进制文件中读取enum 值,并想检查该值是否真的是enum 值的一部分。我该怎么做?
#include <iostream>
enum Abc
{
A = 4,
B = 8,
C = 12
};
int main()
{
int v1 = 4;
Abc v2 = static_cast< Abc >( v1 );
switch ( v2 )
{
case A:
std::cout<<"A"<<std::endl;
break;
case B:
std::cout<<"B"<<std::endl;
break;
case C:
std::cout<<"C"<<std::endl;
break;
default :
std::cout<<"no match found"<<std::endl;
}
}
我必须使用switch 运算符还是有更好的方法?
编辑
我设置了枚举值,不幸的是我无法修改它们。更糟糕的是,它们不是连续的(它们的值是 0、75、76、80、85、90、95、100 等)
【问题讨论】:
-
任何枚举都只是一个数字,所以我认为没有更好的方法来检查它。您可能应该为您的数据类型定义一个更严格的结构。