我刚开始学习c++,在这个简单的代码中我有以下问题:
enum class color_type {green,red,black};
color_type color(color_type::red);
我得到错误"color_type不是一个类或命名空间"。我的目标是创建一个color_type类型的变量,它只能接受红色、黑色和绿色的值。你能帮帮我吗?谢谢你
你的代码看起来像有效的c++11对我来说。
如果你的编译器不支持c++11,那么你可以模拟一个带有命名空间或结构的枚举类,如
struct colour_type
{
enum value
{
red,
green,
blue
}
}
//usage is like so
colour_type::value myColour = colour_type::red;
它不是完美的,但它保持枚举在自己的作用域中
似乎你的编译器不支持无作用域枚举器的限定名称(我的意思是你的帖子之前的版本,当有显示一个无作用域枚举)。简单写
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);