使用类中的枚举(C++)

sme*_*ead 5 c++ enums

我正在使用一个包含多个枚举的类的库.这是一个例子

class TGNumberFormat
{
  public:
  // ...
  enum EAttribute {   kNEAAnyNumber
    kNEANonNegative
    kNEAPositive
  };
  enum ELimit {   kNELNoLimits
    kNELLimitMin
    kNELLimitMax
    kNELLimitMinMax
  };
  enum EStepSize {   kNSSSmall
    kNSSMedium
    kNSSLarge
    kNSSHuge
  };
  // etc...
};
Run Code Online (Sandbox Code Playgroud)

在代码中,我必须参考这些TGNumberFormat::kNEAAnyNumber例子.我正在编写一个经常使用这些值并且代码变得丑陋的GUI.有什么方法可以导入这些枚举,只需输入kNEAAnyNumber?我真的不希望这些名称中的任何一个重叠.我已经尝试了各种使用using关键字的方法,没有人会编译.

Jam*_*lis 8

如果您在代码中使用这些常量,那么创建自己的标头可能会有用,它会重新定义命名空间中的值.然后你可以using那个命名空间.您无需重新定义所有值,只需重新定义枚举器的名称.例如,

namespace TGEnumerators
{
    static EAttribute const kNEAAnyNumber(TGNumberFormat::kNEAAnyNumber);
    // etc.
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以TGNumberFormat在经常使用它的函数或源文件中键入def 为较短的名称.例如,

typedef TGNumberFormat NF;
NF::EAttribute attribute = NF::kNEAAnyNumber;
Run Code Online (Sandbox Code Playgroud)

我认为后一种方法是优越的,如果在块范围内明智地使用,则是一种很好的做法.但是,为了清楚起见,为了在文件中使用,我认为最好使用枚举器的全名.