在c ++中创建新类型时出错

时间:2015-05-30 10:06:05

标签: c++ class enums

我刚开始学习c ++,我在这个简单的代码中遇到了以下问题:

enum class color_type {green,red,black};

color_type color(color_type::red);

我收到错误“color_type不是类或命名空间”。我的目标是创建一个color_type类型的变量,它只能取值红色,黑色和绿色。请你帮助我好吗?谢谢

2 个答案:

答案 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 ++标准,

是正确的。