ben int işaretsiz türüne sahip bir kapsamlı-enum açmak için çalışıyorum Açılması: olarakkapsamlı enum
enum tanımlanır bu değeri enum değerlerine göre kontrol etmeye çalışmak.
void func(const unsigned int & num)
{
switch (num)
{
case EnumType::SOME:
....
break;
case EnumType::MORE:
....
break;
....
default:
....
}
}
Bu sözdizimi hatası ile sonuçlanır: gibi, her anahtarın üzerinde bir static_cast
kullanarak, Şimdi Error: This constant expression has type "EnumType" instead of the required "unsigned int" type.
:
case static_cast<unsigned int>(EnumType::SOME):
....
break;
case static_cast<unsigned int>(EnumType::MORE):
....
break;
düzeltmeleri sözdizimi hatası her case ifadesi doesn de döküm rağmen Bunu yapmanın iyi bir yolu gibi görünmüyor. Her durumda gerçekten almam gerek mi yoksa daha iyi bir yolu var mı?
Kanaatimce, güçlü bir şekilde yazılan enumların tümü, ... ... iyi yazılmışlar, bu yüzden örtük bir dönüşüm yok. Yani evet, yayınlaman gerek. DÜZENLEME: Şimdi görmen gerekmediğini, her bir durum için yayınlayıp yayınlamayacağınızı sormadığını görüyorum. Üzgünüm benim hatam. – antred