我有類似以下內容:通過訪問向枚舉值 '::' 在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