C++ の列挙型を再定義する方法を教えてください。
C++のenumは列挙型であり、定数の集合を定義するために使用されます。enum型は一度だけ定義できますが、再定義することはできません。ただし、enum型を再定義する必要がある場合は、enum classキーワードを使用します。
enum class は C++11 で導入された機能で、型の安全性が高い列挙型を作成するために使われます。enum class で定義した列挙型は、自動的に整数型に変換されず、列挙値のスコープは enum class 内に限定されます。
enum classを使用してenum型を再定義する例を以下に示します。
enum class Color { Red, Green, Blue };
int main() {
Color color = Color::Red;
// color = 0; // 错误,不能将整数赋值给enum class类型
// color = Color::Green; // 错误,不能将不同的enum class类型赋值给color
if (color == Color::Red) {
// ...
}
return 0;
}
この例では、enum class ColorがRed、Green、Blueの3つの列挙値を定義しています。enum classで定義した列挙型は、整数に直接代入することはできず、異なるenum class型同士での代入もできません。また、列挙値のスコープはColor内部に限定されており、Color::Redのようにして列挙値にアクセスする必要があります。
enum classに置き換えるとenumの値が自動的に整数型に変換されなくなることに注意。明示的に変換しないと、enumの値を整数に変換することができません。