假设我们有一个枚举,如下所示:
enum Days {Saturday, Sunday, Tuesday, Wednesday, Thursday, Friday};
我想创建这个枚举的一个实例,并初始化它与一个适当的值,所以我做:
Days day = Days.Saturday;
现在我想用一个现有的enum值检查我的变量或实例,所以我这样做:
if (day == Days.Saturday)
{
std::cout << "Ok its Saturday";
}
这给了我一个编译错误:
错误:在`之前期望主表达式。“令牌
所以要明确的是,这两者的区别是什么
if (day == Days.Saturday) // Causes compilation error
and
if (day == Saturday)
?
这两个实际上指的是什么,一个是OK,一个导致编译错误?
不要把enum看成一组对象,把它看成一个整数,其中每个数值都有一个名称,所以enum Days最好声明为enum Day。
如果你想把它包含在一个命名结构中,把enum Day放在一个结构Days中,就像这样:
struct Days{
enum Day{
Saturday,
Sunday,
Tuesday,
Wednesday,
Thursday,
Friday
};
};
然后您可以像这样称呼它们Days::Saturday,类型为Days::Day
如果您仍在使用c++ 03并希望使用枚举,则应该在命名空间中使用枚举。
例如:
namespace Daysofweek{
enum Days {Saturday, Sunday, Tuesday,Wednesday, Thursday, Friday};
}
你可以像这样在命名空间之外使用枚举,
Daysofweek::Days day = Daysofweek::Saturday;
if (day == Daysofweek::Saturday)
{
std::cout<<"Ok its Saturday";
}