C++ 错误:“enumElement”未在此作用域中声明

C++ 错误:“enumElement”未在此作用域中声明,c++,enums,C++,Enums,我写了以下小脚本: #include <string> #include <iostream> #include <cstdlib> using namespace std; int main() { enum class Day {sunday, monday, thuesday, wednesday, thursday, friday, saturday}; Day unusedDay, today = sunday; } 但这是我的枚举

我写了以下小脚本:

#include <string>
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
    enum class Day {sunday, monday, thuesday, wednesday, thursday, friday, saturday};
    Day unusedDay, today = sunday;
}
但这是我的枚举类。为什么不宣布星期天?我怎样才能改变这一点

感谢您的回复:

Day unusedDay, today = Day::sunday;
枚举数在枚举的范围内。

Write

Day unusedDay, today = Day::sunday;
枚举数在枚举范围内。

您将枚举与枚举类混淆。假设您的代码是:

enum Day {sunday, monday, thuesday, wednesday, thursday, friday, saturday};
Day unusedDay, today = sunday;
然后编译上面的代码,因为普通枚举具有全局可见的值,所以您可以像Day unusedDay、today=sunday;一样访问它们;。对于枚举类,规则略有不同。为了使示例正常工作,您需要编写如下代码:

enum Day {sunday, monday, thuesday, wednesday, thursday, friday, saturday};
Day unusedDay, today = Day::sunday;
如果查看enum与enum类的文档,您会看到:

枚举

声明其基础类型不固定的非范围枚举类型-

注意这里使用了unscoped一词,意思是变量仅与它的名称一起可用

枚举类

声明一个作用域枚举类型,其基础类型为int。关键字class和struct完全等效

如图所示,枚举类的作用域是有限的,并且只能作为enumname::value访问

您将枚举与枚举类混淆。假设您的代码是:

enum Day {sunday, monday, thuesday, wednesday, thursday, friday, saturday};
Day unusedDay, today = sunday;
然后编译上面的代码,因为普通枚举具有全局可见的值,所以您可以像Day unusedDay、today=sunday;一样访问它们;。对于枚举类,规则略有不同。为了使示例正常工作,您需要编写如下代码:

enum Day {sunday, monday, thuesday, wednesday, thursday, friday, saturday};
Day unusedDay, today = Day::sunday;
如果查看enum与enum类的文档,您会看到:

枚举

声明其基础类型不固定的非范围枚举类型-

注意这里使用了unscoped一词,意思是变量仅与它的名称一起可用

枚举类

声明一个作用域枚举类型,其基础类型为int。关键字class和struct完全等效

如图所示,枚举类的作用域是有限的,并且只能作为enumname::value访问


sunday不能像那样访问是首先使用enum类的一半。请参阅。@mep,如果您发现任何答案正确,请单击答案旁边的灰色复选标记图标,在向下投票箭头下,将其标记为正确,如果答案正确,则它应该变为绿色。如果无法访问,则这是首先使用enum类的一半。请参见。@mep,如果您发现任何答案正确,请单击答案旁边的向下投票箭头下的灰色复选标记图标,将其标记为正确,如果答案正确,它应该变成绿色