Sdílet prostřednictvím


Výčtové typy a převody

Výčtové typy jsou typy integrálů, všechny čítače výčtu lze převést na jiný typ nedílnou podle nedílnou propagace.Vezměme si jako příklad:

// 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";
}

bd77ckhw.collapse_all(cs-cz,VS.110).gifVýsledek

i = 4

Je však žádná implicitní převod všech integrálního typu výčtového typu.Proto chyba (pokračovat v předchozím příkladu), je následující:

d = 6;    // Erroneous attempt to set d to Saturday.

Přiřazení například, pokud neexistuje žádná implicitní převod, musíte použít osazení k provedení převodu:

d = (Days)6;    // Explicit cast-style conversion to type Days.
d = Days( 4 );  // Explicit function-style conversion to type Days.

Předchozí příklad ukazuje převody hodnot, které se překrývají s výčtu.Neexistuje žádný mechanismus, který chrání před převod hodnoty, který se nekryje s jednou výčtu.Příklad:

d = Days( 967 );

Některé tyto převody mohou pracovat.Je však zaručit, že výsledná hodnota bude jeden čítače výčtů.Navíc pokud velikost čítače výčtu je příliš malá hodnota převáděna, uložená hodnota nemusí být očekávání.

Viz také

Referenční dokumentace

Deklarace výčtu C++