Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Como os tipos enumerados são tipos integrais, qualquer enumerador pode ser convertido em outro tipo integral para promoção integral.Considere este exemplo:
// enumerated_types.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
enum Days
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
};
int i;
Days d = Thursday;
int main()
{
i = d; // Converted by integral promotion.
cout << "i = " << i << "\n";
}
Saída
i = 4
No entanto, não há nenhuma conversão implícita de qualquer tipo integral para um tipo enumerado.Portanto (continuando com o exemplo anterior), a instrução a seguir seja um erro:
d = 6; // Erroneous attempt to set d to Saturday.
Atribuições como esta, onde nenhuma conversão implícita existe, devem usar a projeção para executar a conversão:
d = (Days)6; // Explicit cast-style conversion to type Days.
d = Days( 4 ); // Explicit function-style conversion to type Days.
O exemplo anterior mostra as conversões de valores que coincidem com os enumeradores.Não há nenhum mecanismo que protege você de converter um valor que não coincide com um dos enumeradores.Por exemplo:
d = Days( 967 );
Algumas dessas conversões podem funcionar.No entanto, não há nenhuma garantia que o valor resultante será um dos enumeradores.Além disso, se o tamanho do enumerador é muito pequeno para conter o valor que está sendo convertido, o valor armazenado pode não ser o que você espera.