引用 enum 中枚举常量的问题

#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 ; // 这里有错误, 为什么限定符中不能使用枚举?
return 0;
}
当引用类型内的枚举时,无需指定枚举的名称。
文件范围的枚举定义相当于常量,也不需要限定名。
int main(int argc, char* argv[])
{
A a ;
a.m_data
= A::X ; // 正确, 由于枚举的一对大括号不构成作用域,
                  // 所以类中的枚举常量的访问方式与静态成员等相同,直接加类名限定就行了
return 0;
}
posted @ 2011-06-08 21:44  walfud  阅读(1101)  评论(0编辑  收藏  举报