[原创]简单讲一下类成员函数指针的用法

简单讲一下类成员函数指针的用法

    最近在写关于控件的东西,所以用到一些事件响应方面的处理。以前的用法都是

 

typedef void (*PFNMEDIAPLAYNOTIFY)(void *pValue);
把pValue 当做当前类的指针传递回一个类外面的函数,而在类外面写函数,对于封装来讲就感觉很唐突,也很难管理。

简单研究了一些文章,用到了一个很有效的方法类成员函数指针

定义形式为:

typedef void (CWnd::*FUNCBTCLICK)();

采用类名::然后跟函数的指针的形式,然后在另一个类里面直接 类对象指针->*func指针的形式进行调用。

下面讲一个实际应用中的例子:

 //Button.h

typedef void (CWnd::*FUNCBTCLICK)();//

class CButton  //Button类的定义

{

public:

 CButton (CWnd  * cls){m_pClass = cls;}

 void setOnClick(FUNCBTCLICK func)

{

  m_funBTClick= func;

}

void  onClick()

{

   (m_pClass->*m_funBTClick)();//调用事件通知函数

}

/*省略其他处理函数*/

private:

   CWnd  *m_pClass;

  FUNCBTCLICK m_funBTClick;

}

 

 

 

 

//Menu.h

 

class CMenuWnd:public CWnd

{

public:

  CMenuWnd()

 {

   m_pBT = new CButton(this);

   m_pBT->setOnClick((FUNCBTCLICK )&CMenuWnd::onClick); 

 }

 

void onClick()

{

//当按钮收到被点击消息后的处理

}

private:

 CButton  *m_pBT;

}

 

 

 这样既可把处理函数写在类里面,更好的管理了!

 

 

by 狮子

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值