C++中调查员的范围

Scope of enumerators in C++

本文关键字:范围 调查员 C++      更新时间:2023-10-16

如何在枚举之外访问枚举的成员,因为所有成员范围都仅限于它们的块。

#include<iostream>
enum{MON,TUE,WED};
using namespace std;
int main(){
cout << TUE;//How TUE is accessed since it has to be limited to enum's scope
return 0;
}
枚举成员的作用域
  1. 如何在枚举块之外,因为在类或结构中,其成员的作用域仅限于它们定义的块。

  2. 既然我们不是在创建枚举的对象,那么当内存分配给枚举成员时?

无作用域枚举将其名称泄漏到定义它们的enum {}大括号之外,并泄漏到拥有枚举的作用域中,枚举是全局作用域,在您的情况下。这就是为什么你不能有一个与其中一个枚举同名的变量。作用域枚举不会在定义它们的枚举作用域之外泄漏其名称。

所有成员的范围都限制在其块内

没有

C++ 中的enum的作用域与在其中定义的命名空间具有相同的作用域,在本例中为全局作用域。

您拥有的是一个无作用域的枚举。也许您对作用域枚举感到困惑。


PS:匿名枚举的用法。

所有成员的范围都限制在其块内

不,C++ 中的enum不是这种情况:范围是定义enum的 namspace。在你的案例中,这是全球性的。

C++11 及以后的enum class通过将enum值本地化到该class来解决此问题。