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";
}
Çı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.