C++枚举名称重叠

Rus*_*han 2 c++ enums c++11

假设我有一个包含两个枚举的类.

    enum NameType { Defined, Inherited };
    enum ValueType { Defined, Inherited };
Run Code Online (Sandbox Code Playgroud)

数字值在第二个枚举中被称为"先前定义",因为它们与第一个枚举具有相同的名称.是否有简洁的语法并允许这些名称?

我知道在C#中这不是问题,但在C++中它似乎是.我正在使用C++ 11.

NPE*_*NPE 8

由于您使用的是C++ 11,我建议使用enum class.

enum class NameType { Defined, Inherited };
enum class ValueType { Defined, Inherited };
Run Code Online (Sandbox Code Playgroud)

这解决了范围问题.

有关进一步讨论,请参见http://www.cprogramming.com/c++11/c++11-nullptr-strongly-typed-enum-class.htmlenum class.