我有类似以下内容:通过访问向枚举值 '::' 在C++
class Car
{
public:
Car();
// Some functions and members and <b>enums</b>
enum Color
{
Red,
Blue,
Black
};
Color getColor();
void setColor(Color);
private:
Color myColor;
}
我想:
- 访问
Color
值Color::Red
。这实在是很难理解的代码时Car::Red
时,上课时有很多枚举,子类等 - 利用类型
Color
作为函数参数或返回值 - 使用的变量类型
Color
在switch
我知道3个部分解决方案:
- 在它
- 使用嵌入类
Color
和枚举使用嵌入式南协商Color
和枚举它 - 使用
enum class
1和2的解决方案解决了Color::Red
加入的问题,但我不能使用功能,如Color getColor()
和void setColor(Color)
。
3解决方案有问题:VS2010不支持enum class
。 GCC v.4.1.2也不支持它。我不知道更高版本的gcc。
是的,我正在开展跨平台项目。
我发现this解决方案,但它似乎...沉重。
我希望有人能帮助我在这里:)
GCC 4。6(使用'-std = C++ 0x')支持'enum class',并且允许'Color :: Red'作为常规枚举。 – leftaroundabout 2012-04-10 14:48:30
请注意,请使用4个空格缩进代码,而不是使用前/代码标记 – CharlesB 2012-04-10 14:51:29
我发现,VS2010比**部分支持[强类型枚举](http://www.open-std.org/jtc1/ SC22/WG21 /文档/文件/ 2007/n2347.pdf)。 – Jury 2012-04-10 15:06:49