enum枚举类型作为成员变量
来源:互联网 发布:剑网三正式版优化 编辑:程序博客网 时间:2024/06/05 04:54
Enum是枚举类型。
定义形式一:
Enum 枚举类型名
{枚举常量1(=0),
枚举常量2(=0),
……
}枚举变量1(,枚举变量2,……);
如
Enum weekday
{ Monday=0,Tuesday,Wednesday,Thursday,Friday=9,Saturday,Sunday
}today;
Weekday 为枚举类型名,today为枚举变量,大括号里面的Monday,Tuesday等都是枚举常量。其中,Monday为0,Tuesday为1,Wednesday=2,Thursday=3,Saturday=10,Sunday=11.
枚举类型还有另外一种定义形式,即省略类型名。
定义形式二:
Enum
{枚举常量1(=0),
枚举常量2(=0),
……
}枚举变量1(,枚举变量2,……);
如Enum
{ Monday=0,Tuesday,Wednesday,Thursday,Friday=9,Saturday,Sunday
}today;
虽然省略了类型名,但C++会自动给该枚举类型取一个类型名,形如__unamed_0000_1。
注意:
1.枚举常量的值不允许再修改。因为它是常量。如Monday=4;这是错的。
2.不能用整数给枚举变量赋值。
如today=0;这是错的。因为类型不匹配。应该改为:today=(weekday)0;
但如果枚举类型的定义形式为第二种形式,则today=(weekday)0也是错误的。原因很简单。因为weekday未定义。假设此时,C++给该枚举类型取的类型名为__unnamed_0000_1,那么,today=(__unnamed_0000_1)0;是否正确呢?
答案是否定的。
如果枚举类型定义在另一个类的定义中,则枚举变量,枚举常量都可以做为该类的成员变量。但是,枚举类型名是类的静态类型。
#include <iostream>
using namespace std;
class myclass
{
public:
enum weekday
{
monday=0,tuesday=1,wednesday,thursday,friday,saturday,sunday
}first,second;//枚举类型的第一种定义形式,枚举类型名为weekday。
};
int main()
{
myclass aclass;
aclass.first=myclass::monday;//枚举常量Monday作为类的成员变量
aclass.first=myclass::weekday::moday;//编译器警告:warning C4482: 使用了非标准扩展: 限定//名中使用了枚举“myclass::weekday”。不应该采取这种方法。
aclass.first=(myclass::weekday)0;// 整数赋给枚举变量。但是必须类型转化。适用于枚举变量的//的第一种定义形式。
}
调试环境为windowsxp+vs2008
- enum枚举类型作为成员变量
- enum枚举类型作为成员变量
- c++ enum 作为成员变量
- C++中enum枚举类型成员重名问题的解决方法
- C++中enum枚举类型成员重名问题的解决方法 - Enum枚举类型的类封装
- C++中enum枚举类型成员重名问题的解决方法 - Enum枚举类型的类封装(转)
- C++中enum枚举类型成员重名问题的解决方法 - Enum枚举类型的类封装(转)
- 【转】C++中enum枚举类型成员重名问题的解决方法 - Enum枚举类型的类封装
- C++中enum枚举类型成员重名问题的解决方法 - Enum枚举类型的类封装
- C++中enum枚举类型成员重名问题的解决方法 - Enum枚举类型的类封装
- Java enum 枚举类型
- C#枚举类型enum
- C#枚举类型enum
- C#枚举类型enum
- enum枚举类型学习
- JAVA枚举类型Enum
- 枚举类型-enum使用
- C枚举类型enum
- 提取字符串中的数字
- DEBUG_NEW 导致编译失败的问题
- Eclipse在linux下的安装问题
- S2SH+JQuery+JSON+AJAX表单验证及文件上传
- vi 命令
- enum枚举类型作为成员变量
- POJ 1589 Unix ls
- Hibernate 线程,数据操作锁机制测试
- Session,ViewState用法
- 防止缓冲区溢出
- 删除指定文件夹plugin
- sql 去除重复列(行)
- 如何选择最合适的服务器方案(一):服务器硬件配置
- 图像变换(离散余弦变换DCT)