相关疑难解决方法(0)

枚举类型的命名空间 - 最佳实践

通常,人们需要一起使用几种枚举类型.有时,一个人有一个名字冲突.我想到了两种解决方案:使用命名空间,或使用"更大"的枚举元素名称.仍然,命名空间解决方案有两种可能的实现:具有嵌套枚举的虚拟类或完整的命名空间.

我正在寻找这三种方法的优缺点.

例:

// oft seen hand-crafted name clash solution
enum eColors { cRed, cColorBlue, cGreen, cYellow, cColorsEnd };
enum eFeelings { cAngry, cFeelingBlue, cHappy, cFeelingsEnd };
void setPenColor( const eColors c ) {
    switch (c) {
        default: assert(false);
        break; case cRed: //...
        break; case cColorBlue: //...
        //...
    }
 }


// (ab)using a class as a namespace
class Colors { enum e { cRed, cBlue, cGreen, cYellow, cEnd }; };
class Feelings { enum e { cAngry, cBlue, cHappy, cEnd …
Run Code Online (Sandbox Code Playgroud)

c++ enums scope nested

98
推荐指数
7
解决办法
7万
查看次数

使用枚举声明?

使用声明似乎不适用于枚举类型

class Sample{
public:
enum Colour { RED,BLUE,GREEN};
}

using Sample::Colour;
Run Code Online (Sandbox Code Playgroud)

不起作用!! 我们是否需要为枚举类型的每个枚举器添加使用声明?如下

using sample::Colour::RED;
Run Code Online (Sandbox Code Playgroud)

c++ enums using-declaration

7
推荐指数
4
解决办法
7570
查看次数

标签 统计

c++ ×2

enums ×2

nested ×1

scope ×1

using-declaration ×1