我正在使用作用域枚举来枚举我正在实现的某个状态机中的状态。例如,让我们这样说:作用域枚举等价于“使用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