[原创]简单讲一下类成员函数指针的用法
2011-05-14 22:22
309 查看
简单讲一下类成员函数指针的用法
最近在写关于控件的东西,所以用到一些事件响应方面的处理。以前的用法都是
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 狮子
最近在写关于控件的东西,所以用到一些事件响应方面的处理。以前的用法都是
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 狮子
相关文章推荐
- Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法:
- Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法:
- C++成员函数指针错误用法警示
- 一般函数指针的用法与类成员的函数指针
- const限定修饰符用法总结(常量,指针,迭代器,函数参数,成员函数)
- 类的成员函数指针和mem_fun适配器的用法
- 指向类非static的数据成员和函数的指针用法
- 类的成员函数指针和mem_fun适配器的用法
- const限定修饰符用法总结(常量,指针,迭代器,函数参数,成员函数)
- C++成员函数指针一种用法
- const限定修饰符用法总结(常量,指针,迭代器,函数参数,成员函数)
- 成员函数指针的用法
- C++成员函数指针错误用法警示(成员函数指针与高性能的C++委托,三篇),附好多评论
- const限定修饰符用法总结(常量,指针,迭代器,函数参数,成员函数)
- this指针在类成员函数中用法
- 类成员函数指针的用法
- const限定修饰符用法总结(常量,指针,迭代器,函数参数,成员函数)
- 简单的介绍一下C中函数指针
- typedef函数指针用法
- 关于js中小问题与一些简单函数的用法