c enum类整数不适用于数组下标

前端之家收集整理的这篇文章主要介绍了c enum类整数不适用于数组下标前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下枚举类:
  1. enum class EnumClass : int
  2. {
  3. A = 0,B
  4. };

现在我想用枚举类型下标到数组:

  1. MyObject arr[2];
  2. .
  3. .
  4. .
  5. MyObject a = arr[EnumClass::A]
  6. MyObject b = arr[EnumClass::B]

不幸的是我收到以下错误消息:

  1. array subscript is not an integer

由于枚举类是强类型的,我希望这可以工作.

@H_403_14@

解决方法

As enum classes are strongly typed I would expect this to work

相反,这正是它无法运作的原因. Scoped枚举不会隐式转换为基础类型.请改用static_cast.

  1. MyObject a = arr[static_cast<int>(EnumClass::A)];
@H_403_14@ @H_403_14@

猜你在找的C&C++相关文章