C/C++中遍历枚举类型

通常在其他语言中,例如VB,JAVA等,都可以直接对枚举类型进行遍历,但是要在c/c++中直接遍历,就遇到问题了。那是不是C/C++中用不着遍历枚举类型呢?我个人觉得不是,因为既然其他语言中有遍历的方法,那肯定就有存在的理由,例如VB中可以使用一个函数轻轻松松拆分一个字符串,C/C++就不行,还得自己写,那好吧,那我们就自己写遍历枚举类型的方法。

我选取CDialogEx里的一个枚举变量来做例子:

	enum BackgroundLocation
	{
		BACKGR_TILE,
		BACKGR_TOPLEFT,
		BACKGR_TOPRIGHT,
		BACKGR_BOTTOMLEFT,
		BACKGR_BOTTOMRIGHT,
	};

以上是枚举申明,以下是遍历代码:

for( CDialogEx::BackgroundLocation myEnum = CDialogEx::BACKGR_TILE ; 
	myEnum <= CDialogEx::BACKGR_BOTTOMRIGHT ; (CDialogEx::BackgroundLocation)myEnum++ )
{
	SetBackgroundImage(IDB_BITMAP_BK, myEnum);
	AfxMessageBox(_T("停一下"));
}

但是直接这样是有问题的,因为枚举类型没有操作符++的实现方法,我们要自己写一个:

inline CDialogEx::BackgroundLocation operator++( CDialogEx::BackgroundLocation &rs, int ) 
{
    CDialogEx::BackgroundLocation oldEnum = rs;
    rs = (CDialogEx::BackgroundLocation)(rs + 1);
    return oldEnum;
}

这样,我们就可以对枚举类型进行遍历了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值