Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Uppräkningstypen 'type-name' är oöverlagd. Föredra "enum class" framför "enum" (Enum.3)
Anmärkningar
Föredra enum class framför enum för att förhindra föroreningar i det globala namnområdet.
Kodanalysnamn: PreferScopedEnum
Exempel
Följande exempel är från C++ Core Guidelines:
void Print_color(int color);
enum Web_color { red = 0xFF0000, green = 0x00FF00, blue = 0x0000FF };
enum Product_info { Red = 0, Purple = 1, Blue = 2 };
Web_color webby = Web_color::blue;
// Clearly at least one of these calls is buggy.
Print_color(webby); // C26812
Print_color(Product_info::Blue); // C26812
Dessa varningar korrigeras genom att deklarera en enum som enum class:
void Print_color(int color);
enum class Web_color { red = 0xFF0000, green = 0x00FF00, blue = 0x0000FF };
enum class Product_info { Red = 0, Purple = 1, Blue = 2 };
Web_color webby = Web_color::blue;
Print_color(webby); // Error: cannot convert Web_color to int.
Print_color(Product_info::Red); // Error: cannot convert Product_info to int.