在c++中,enum hack有时候可以用来充当一个常量的用法,例如下面例子:
enum name {Joey = 10};
enum class color {green, red, blue};
int main(int argc, char* argv[]) {
int a[Joey]; //Ok,这样可以生成一个int[10]的数组
int a[color::green]; //Error, 这样是不行的
int a[static_cast<int>(color::green)] //OK, 强制将color类型转成int类型
}
值得注意的是,enum可以直接转换而enum class是不能直接隐式转换的。而且无论是enum或者enum class的元素都是是一个右值,所以它们既不能取指针也不能取引用。