#include
<
iostream
>
using namespace std ;
class A
{
public :
enum B{ X, Y } ; // 这里无法再类外引用
public :
A(){}
~ A(){}
public :
B m_data ; // 为了方便说明, 就 public 了
} ;
int main( int argc, char * argv[])
{
A a ;
a.m_data = A::B::X ; // 这里有错误, 为什么限定符中不能使用枚举?
using namespace std ;
class A
{
public :
enum B{ X, Y } ; // 这里无法再类外引用
public :
A(){}
~ A(){}
public :
B m_data ; // 为了方便说明, 就 public 了
} ;
int main( int argc, char * argv[])
{
A a ;
a.m_data = A::B::X ; // 这里有错误, 为什么限定符中不能使用枚举?
return
0
;
}
}
当引用类型内的枚举时,无需指定枚举的名称。
文件范围的枚举定义相当于常量,也不需要限定名。
文件范围的枚举定义相当于常量,也不需要限定名。
int
main(
int
argc,
char
*
argv[])
{
A a ;
a.m_data = A::X ; // 正确, 由于枚举的一对大括号不构成作用域,
{
A a ;
a.m_data = A::X ; // 正确, 由于枚举的一对大括号不构成作用域,
// 所以类中的枚举常量的访问方式与静态成员等相同,直接加类名限定就行了
return 0 ;
}
return 0 ;
}