我刚开始学习c ++,我在这个简单的代码中遇到了以下问题:
enum class color_type {green,red,black};
color_type color(color_type::red);
我收到错误“color_type不是类或命名空间”。我的目标是创建一个color_type类型的变量,它只能取值红色,黑色和绿色。请你帮助我好吗?谢谢
答案 0 :(得分:1)
您的代码对我来说似乎是有效的c ++ 11。
如果您的编译器不支持c ++ 11,那么您可以使用命名空间或结构模拟枚举类
struct colour_type
{
enum value
{
red,
green,
blue
}
}
//usage is like so
colour_type::value myColour = colour_type::red;
它并不完美,但它将枚举保持在自己的范围内。
答案 1 :(得分:0)
您的编译器似乎不支持无范围枚举器的限定名称(我的意思是在其版本显示未编组的枚举之前的帖子)。写简单
enum color_type {green,red,back};
color_type color(red);
或者您可以使用范围枚举,例如
enum class color_type {green,red,back};
color_type color(color_type::red);
实际上是这些声明
enum color_type {green,red,back};
color_type color(color_type::red);
根据当前的C ++标准,是正确的。