typestar

Enums con ámbito en C++

enum class mantiene los enumeradores fuera del ámbito circundante y lejos del int implícito.

#include <string_view>

enum class Level { debug, info, warning, error };

constexpr std::string_view name_of(Level lvl) {
    switch (lvl) {
    case Level::debug:   return "debug";
    case Level::info:    return "info";
    case Level::warning: return "warning";
    case Level::error:   return "error";
    }
    return "unknown";
}

static_assert(name_of(Level::warning) == "warning");
static_assert(static_cast<int>(Level::error) == 3);

Cómo funciona

  1. Level::debug hasta Level::error se escriben con su ámbito — nada de debug a secas.
  2. El switch cubre cada enumerador, así el compilador puede probar que no falta ninguno.
  3. Sin conversión implícita: obtener el 3 subyacente exige un static_cast<int> explícito.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
414
Tokens
116
Ritmo de tres estrellas
80 tpm

Al ritmo de tres estrellas de 80 tokens por minuto, este intento toma unos 87 segundos.

Escribe este fragmento

Paso 3 de 3 en Toques modernos; paso 24 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →