[英]Anonymous enum classes
有可能編寫一個匿名枚舉類,然后比較它包含的內容嗎? 例如。
enum class { APPLE, BANANA } fruitType;
// ...
if (fruitType == fruitType::APPLE)
// ...
不, fruitType
是一個變量(盡管名稱中包含Type)。 您不能使用變量名來訪問有關其類型的內容。
使用enum class
的想法是,除非使用類型名稱作為前綴,否則這些值在定義之外是不可見的。 如果類型沒有名稱,這將很難!
你不能這樣做:
enum class { APPLE, BANANA } fruitType;
if (fruitType == fruitType::APPLE)
但你可以這樣做:
enum class FT { APPLE, BANANA } fruitType;
if (fruitType == FT::APPLE)
......這可能同樣容易。
請注意,您可能想要初始化它:
enum class FT { APPLE, BANANA } fruitType = FT::BANANA;
if (fruitType == FT::APPLE)
不是這樣的。 fruitType::APPLE
不正確,因為fruitType
不是命名空間的名稱。 但是,如果您只是編寫fruitType == APPLE
(沒有為APPLE
添加前綴),那就沒關系了。
我說這沒有意義。 它打破了enum類的整個想法,它被引入來解決傳統枚舉的一些問題(將枚舉器導出到周圍的范圍,隱式轉換為int,不可能指定底層類型)。 如果聲明匿名枚舉類,則其枚舉數不可訪問,因為它們不能被限定。 所以它沒有任何意義。
你不能。
但我同意能夠做到這一點會很好。 有時枚舉已經是一個充分嵌套和有限范圍的一部分,進一步的限定將是純粹的矯枉過正,但你仍然希望禁止轉換為int。 所以你必須做出權衡:選擇這兩種功能,或兩種功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.