两个不同的枚举具有相同的项目,在 C++ 中不起作用

juj*_*umu 1 c++ enums

我真的希望能够在我的代码中执行此操作,但出现此错误:重新定义枚举器“TEST”

enum test1 {
    TEST
};

enum test2 {
    TEST
};
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题,因为我真的想在不同的枚举中使用相同的名称。还有为什么会出现这种情况呢?

Sel*_*ato 8

这可以通过将枚举定义为enum class而不是普通的来解决enum。通过定义为普通枚举,名称不受范围限制,因此彼此冲突。如果它们被定义为枚举类,则名称包含在枚举的范围内。但请注意,由于此更改,您还需要使用范围解析运算符,例如test1::TESTtest2::TEST

  • 请注意,范围运算符不是副作用,它是枚举类存在的原因的一部分。能够明确并有可能重用名称。 (3认同)
  • 更准确地说,是“范围解析运算符”。 (2认同)

归档时间:

查看次数:

272 次

最近记录:

4 年,1 月 前