Aracılığıyla paylaş


Dönüşümler ve numaralanmýþ türleri

Numaralanmýþ türlerde ayrılmaz türleri olduklarından, herhangi bir numaralayıcı ayrılmaz promosyon başka bir tam sayı türüne dönüştürülebilir.Bu örneði ele alalým:

// 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(tr-tr,VS.110).gifÇıktı

i = 4

Ancak, herhangi bir tamsayı türü arasında örtülü Dönüşüm numaralandýrýlmýþ bir tür için vardır.Bu nedenle (önceki örnekle devam ediyor), aşağıdaki hata ifadesidir:

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

Örtük dönüştürme var burada, dönütürme ilemini gerçekletirmek için atamaları, bu gibi bir cast kullanmanız gerekir:

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

Önceki örnekte sıralayıcısını dönüşümleri çakıştığı değerleri gösterir.Birleşen olmayan bir değer sıralayıcısını biriyle dönüştürme koruyan bir mekanizma vardır.Örne?in:

d = Days( 967 );

Tür dönüştürmeleri çalışabilir.Ancak, sonuç değeri sıralayıcısını biri olacaktır hiçbir garantisi yoktur.Numaralayıcı boyutunu dönüştürülen değerin tutmak için çok küçük ise, ayrıca, saklanan değer, beklediğiniz olmayabilir.

Ayrıca bkz.

Başvuru

C++ numaralandırma bildirimleri