Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Declarando enum e acessando membros
  2. Enum como parâmetro, argumento e retorno
  3. Usar enum como retorno
  4. Usar vetor/matriz de enum
  5. Class Enum
  6. Enum e comando switch
  7. Enum e typedef
  8. Converte elemento enum para string
  9. Comparando enums

O tipo enum é composto de um ou mais constantes que são declaradas como seus membros. Se os membros não forem iniciados, os valores iniciados 0 a N elementos é utilizado como padrão e associado a cada elemento.

Se um membro for iniciado com um determinado valor, os membros seguintes sem terão seus valores baseados nesse membro, sendo incrementando em 1 quando não possuam seus valores pre-definidos.

Abaixo, a sintaxes A e B mostram a definição de um enumerador e seu uso na declaração de uma variável respectivamente. Na sintaxe A, os [valores] atribuídos são opcionais.

Sintaxe A
enum nome_enum
{
  MEMBRO1 = [valor1], //0 padrão
  MEMBRO2 = [valor2], //1 padrão
  MEMBRON = [valorN]  //N padrão
};
Sintaxe B
enum nome_enum nome_variavel;

enum nome_enum nome_variavel= valor;

Por serem constantes os membros de um enumerador, por boa práticas, seus nomes são declarados em caixa alta. Para nomes compostos, utilizar Snake Case.

Exemplo 1
#include <iostream>
using namespace std;

enum valor_opcao
{
  ZERO,  UM,  DOIS,  TRES
};

int main ()
{
  enum valor_opcao opcao;
  return 0;
}

Em C++, diferente enumeradores não podem ser ter seus membros declarados com nomes de membros já utilizados em outros enumeradores.

Exemplo 2
#include <iostream>
using namespace std;

enum enumerador1 { ELEMENTO1, ELEMENTO2, }

enum enumerador2 { ELEMENTO1,  ELEMENTO2  }

int main(void)
{

}
Saída
main.cpp:6:20: error: ‘ELEMENTO1’ conflicts with a previous declaration
    6 | enum enumerador2 { ELEMENTO1,  ELEMENTO2  }
      |                    ^~~~~~~~~
main.cpp:4:20: note: previous declaration ‘enumerador1 ELEMENTO1’

O acesso aos membros de um enum ou enumerador, diferente de unions e struct, é feito pelo próprio nome do membro:

Sintaxe
NOME_MEMBRO_ENUM;
Exemplo 3
#include <iostream>
using namespace std;

enum valor_opcao
{
  ZERO,  UM,  DOIS,  TRES
};

int main ()
{
  enum valor_opcao opcao = TRES;
  cout << opcao;
  return 0;
}
Saída
3

O uso de enum como parâmetro de um função e passagem como argumento, é semelhante aos outros exemplos de outros tipos de dados vistos anteriormente.

Sintaxe
tipo_retorno nome_funcao(enum nome_enum nome_param)
{
  //corpo omitido
}
Onde
nome_funcao: nome da função desejada.
tipo_retorno: tipo de dado de retorno.
nome_param: nome do paramêtro da função.
Exemplo 4
#include <iostream>
using namespace std;

enum valor_opcao
{
  ZERO,  UM,  DOIS,  TRES
};

void funcao(enum valor_opcao opcao)
{
    cout << opcao;    
}

int main ()
{
  enum valor_opcao opcao = TRES;
  funcao(opcao);
  
  return 0;
}
Saída
3

O retorno do tipo de dado por uma função é feita da mesma forma utilizada como outros tipos de dados. Utilizamos a palavra reservada return seguido da uma variável do tipo enum.

Sintaxe
enum nome_enum nome_funcao(<lista_parametros>)
{
  //corpo omitido
  return valor_enum;
}
Onde
nome_funcao: nome da função desejada.
enum nome_enum: tipo de dado de retorno.
<lista_parametros>: lista de parâmetros das funções
Exemplo 5
#include <iostream>
enum cor
{
  NENHUM,  VERDE,  AMARELO,  AZUL,  BRANCO
};
enum cor funcao(void)
{
    enum cor cor_carro = BRANCO;
    return cor_carro;
}
int main ()
{
  enum cor cor_carro = funcao();
  cout << cor_carro;
  return 0;
}
Saída
4

O uso do tipo enum como matriz ou vetor é feito da mesma forma que outros tipos de dados. Definimos suas dimensões utilizando [] e acessamos aos seus elementos utilizando seus índices ou linha e colunas.

Sintaxe
enum nome_enum vetor[num_elem] = {valores};
enum nome_enum vetor[indice];

enum nome_enum matriz[linhas][colunas] = {valores};
enum nome_enum matriz[linhas][colunas];
Onde
num_elem: número de elementos contido no vetor.
linhas: número de linhas da matriz.
colunas: número de colunas da matriz.
valores: lista de valores
Exemplo 6
#include <iostream>
using namespace std;

enum cor
{
  NENHUMA,  VERDE,  AMARELO,  AZUL,  BRANCO
};

int main ()
{
  enum cor vetor[4] = {VERDE, AMARELO, AZUL, BRANCO};
  cout << vetor[0];
  
  return 0;
}
Saída
1

  1. 28/07/2025 - revisão 3 - correções pontuais; ajuste em sintaxes; adiçao de exemplos 1 e 2
  2. 30/09/2024 - revisão 2 - Ajustes gramaticais pontuais e outros
  3. 09/02/2024 - revisão 1 - correção em navegação, exemplos e erros gramaticais
  4. 30/06/2023 - versão inicial