私はバイナリファイルからenum
の値を読んでいて、その値が本当に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
演算子を使用する必要がありますか、それとも良い方法がありますか?
EDIT
私は列挙型の値が設定されていると、残念ながら、私はそれらを変更することはできません。さらに悪いことに、彼らは連続していない(それらの値はなど、75,76,80,85,90,95,100、0を行く)
任意の列挙型は単なる数値なので、それを確認するより良い方法はないと思います。データ型にはより厳密な構造を定義するべきでしょう。 – Rizo