我正在使用作用域枚舉來枚舉我正在實現的某個狀態機中的狀態。例如,讓我們這樣說:作用域枚舉等價於「使用namespace X」嗎?
enum class CatState
{
sleeping,
napping,
resting
};
在我的cpp文件中,我定義了一個狀態轉移表,我想使用的東西相當於using namespace X
這樣我就不需要前綴與所有我的狀態名稱CatState::
。換句話說,我想用sleeping
而不是CatState::sleeping
。我的轉換表有很多列,所以避免使用CatState::
前綴會使事情更加緊湊和可讀。
那麼,有沒有辦法避免必須一直輸入CatState::
?
是啊,是啊,我已經意識到using namespace
的陷阱。如果有強類型枚舉的等價物,我保證只在我的cpp實現文件中的有限範圍內使用它,而不是用於邪惡。
你真的需要一個'enum class',還是'enum'呢? – netcoder 2012-02-26 04:06:30
它最初是一個普通的'enum',但我正在轉換我的代碼以使用C++ 11功能。我喜歡使用'enum class'來強化類型安全的想法。 – 2012-02-26 04:09:36