首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

enum类型并没有定义一个名称空间啊解决思路

2012-06-13 
enum类型并没有定义一个名称空间啊我原本以为enum应该定义了一个类型,里面的数值是有类型的,并且只能通过

enum类型并没有定义一个名称空间啊
我原本以为enum应该定义了一个类型,里面的数值是有类型的,并且只能通过名称空间来访问。
但是下面的代码在VC10运行是没有问题的:

C/C++ code
enum weekday{monday,tuesday};int main(int argc, char* const argv[]){  int i=monday;  return 0;}


weekday算不算一个名称空间? 我的main函数为什么能直接访问weekday当中定义的那些数值而不需要weekday::monday.

这个C++标准有规定么?

[解决办法]
本来就不是, enum是int型的常量

你也不能通过::来访问
[解决办法]
C++标准规定枚举不构成名称,而且枚举类型自成一种类型,可以被提升为int,但不存在从int到枚举类型的隐式转换。
[解决办法]
C++标准规定枚举不构成名称空间
[解决办法]
enum是暴漏出来的,这个要铭记。
[解决办法]
enum是常量的一种

热点排行