【发布时间】:2012-03-16 01:25:32
【问题描述】:
我正在使用范围枚举来枚举我正在实现的某个状态机中的状态。例如,我们可以这样说:
enum class CatState
{
sleeping,
napping,
resting
};
在我定义状态转换表的 cpp 文件中,我想使用与 using namespace X 等效的内容,这样我就不需要在所有状态名称前加上 CatState:: 前缀。换句话说,我想使用sleeping 而不是CatState::sleeping。我的转换表有很多列,因此避免使用 CatState:: 前缀会使内容更加紧凑和可读。
那么,有没有办法避免一直输入CatState::?
是的,是的,我已经意识到using namespace 的陷阱。如果有强类型枚举的等价物,我保证只在我的 cpp 实现文件的有限范围内使用它,而不是邪恶的。
【问题讨论】:
-
您真的需要
enum class,还是需要enum? -
它最初是一个普通的
enum,但我正在转换我的代码以使用 C++11 功能。我喜欢使用enum class来增强类型安全性的想法。