C++中enum的使用的一个简单示例

     在C++中,switch()语句用得很多,但是,switch的参数比较单一,一般只支持Int型,当switch 的参数是复杂的数据类型,如string或自定义的数据类型时,就需要enum对数据类型进行替代。

    如下面这个程序:

#include <iostream.h>
#include <cstdlib>

class Image
{
      public:
             Image( ){ };
             ~Image(){};
             
    enum ImageState
    {
        INIT      = 0, /** < Initialization state */
        READY     = 1, /** < Image ready to use */
        USED      = 2, /** < Image in use */
        DISABLED  = 3, /** < Image can not be instantiated by a VM */
        LOCKED    = 4, /** < FS operation for the Image in process */
        ERROR     = 5  /** < Error state the operation FAILED*/
    };
    
    void set_state(ImageState _state)
    {
         state = _state;
         return ;
     }
     
    ImageState get_state( )
    {
         return state;
    }
    
    int get_size()
    {
        return sizeof(ImageState);
    }
    private:
             ImageState  state;
};
      
      int main()
      {
          Image *aa = new Image();
          aa->set_state(Image::ERROR);
          int c = aa->get_state();
          cout <<"int is "<<sizeof(int)<<endl;
          cout << "ImageState is " <<aa->get_size()<<endl;
          
          cout << "aa is " << c<<endl;
          cout << "aa state is "<<aa->get_state()<<endl;
          
          system("pause");
          return 0;
          
      }

      程序中,定义的Image的状态变量state是一个string类型的值,但是,在作为switch的变量使用时是不可行的,就用enum把state对应的几个string类型值替换成对应的整形值。然后,在使用的时候就是取的整形数值。上述程序的运行结果为:

int is 4

ImageState is 4

aa is 5

aa state is 5

请按任意键继续...


注意,  上述语句aa->set_state(Image::ERROR);中,函数的输入参数ERROR的作用域必须是写包含它的定义的类Image,而不是enum结构的名ImageState。



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值