我正在使用一个包含多个枚举的类的库.这是一个例子
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关键字的方法,没有人会编译.
如果您在代码中使用这些常量,那么创建自己的标头可能会有用,它会重新定义命名空间中的值.然后你可以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)
我认为后一种方法是优越的,如果在块范围内明智地使用,则是一种很好的做法.但是,为了清楚起见,为了在文件中使用,我认为最好使用枚举器的全名.