0

我的旧代码是这样的,

class A
{
public:
enum SomeType {enA=0, enB, enCount};
private:
bool SomeArray[enCount];
}

它在 Visual Studio 2017 上运行良好。但在 VS2019 上提示警告C26812。我只是按照MS doc修改了代码,

enum class SomeType {enA=0, enB, enCount};

警告消失了,但bool SomeArray[enCount];没有编译。

4

1 回答 1

0

与(旧)常规枚举相反,枚举类确实隐式转换为 int 。

您必须显式强制转换 enum (为其基础类型或兼容):

bool SomeArray[static_cast<std::size_t>(enCount)];
于 2020-08-22T11:30:24.750 回答