实现参数的多项组合

 

    在API中经常看到一个参数有多个选项,并且所有的选项都可以组合使用。今日看了一个程序,顿悟!

    首先在一个类的定义里面声明一个enum,项目为你提供的选项。比如

class CMyClass

{

     enum{TASK_MGR  = 0x01,

                 TASK_KEYS = 0x02,

                  TASK_BAR  = 0x04,

                   TASK_ALL  = 0xFFFF};

    //其他成员 。。。。。。

};

     注意这里面的选项除了TASK_ALL按位与的时候结果一定要为0(比如这里的TASK_BAR可以换为0x0404),否则无法实现多项组合。

在需要组合的函数实现时候需要通过按位的或来判断用户输入了什么样的参数组合。以下是一个简单的例子。

BOOL CMyClass::DoSomething(DWORD usrOpt,bool IsClose,......)

{

    if(usrOpt & TASK_MGR) //如果用户输入选项CMyClass::TASK_MGR,则按位与后结果为真若输入CMyClass::TASK_BAR,显然值为0。

    {//...    }

     if(usrOpt & TASK_KEYS)

    {// ......} 

     if(usrOpt & TASK_BAR)

    {//......} 

    //很显然,如果用户选择CMyClass::KEY_ALL,那么没一个if的结果都为真,则每个if分支都将执行到。

    //若参数usrOpt为组合CMyClass::KEY_MGR||CMyClass::KEY_BAR,显然usrOpt & TASK_MGR和usrOpt & TASK_BAR返回都为真,这样就实现了用户输入参数的任意组合,很简单,不是吗。

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值