如何定义和实现一个类的成员函数为回调函数?
2013-10-18 14:33
381 查看
据我所知,有两种方法实现一个类的成员函数作为回调函数。
1. 成员函数为static方法。
2. 用bind和function绑定一个非静态成员的方法。
代码示例如下:
1. 成员函数为static方法。
2. 用bind和function绑定一个非静态成员的方法。
代码示例如下:
#pragma once #include <iostream> #include <memory> #include <functional> class CMyTest { public: CMyTest(void) { // 设置静态成员函数作为回调函数 SetCallBack(CMyTest::static_method); // 设置成员变量作为回调函数 SetCallBack(std::tr1::bind(&CMyTest::normal_method, this)); } ~CMyTest(void){}; typedef void(*FUNC)(void); typedef std::tr1::function<void(void)> FUNC2; // 静态成员方法 static void static_method(void) { std::cout<<"This is a static method!"<<std::endl; } // 普通成员方法 void normal_method(void) { std::cout<<"This is a normal method!"<<std::endl; } void SetCallBack(FUNC pFunc) { m_pFunc = pFunc; } void SetCallBack(FUNC2 pf) { m_pFunc2 = pf; } // 回调方法调用 void DoCallBack() { (*m_pFunc)(); m_pFunc2(); } private: FUNC m_pFunc; FUNC2 m_pFunc2; }; void main() { CMyTest myTest; myTest.DoCallBack(); }
相关文章推荐
- 什么是回调函数,如何定义和实现一个类的成员函数为回调函数(转)
- 【面向对象程序设计常见面试题】如何定义和实现一个类的成员函数为回调函数?
- 如何定义和实现一个类的成员函数为回调函数(转)
- 如何定义和实现一个类的成员函数为回调函数(转)
- 如何定义和实现一个类的成员函数为回调函数
- 如何定义和实现一个类的成员函数为回调函数
- 什么是回调函数,如何定义和实现一个类的成员函数为回调函数(转)
- 如何定义和实现一个类的成员函数为回调函数
- 如何定义和实现一个类的成员函数为回调函数(转)
- 如何定义和实现一个类的成员函数为回调函数
- 如何定义和实现一个类的成员函数为回调函数
- 7.1.23 如何定义和实现一个类的成员函数为回调函数
- 如何定义和实现一个类的成员函数为回调函数
- 定义和实现一个类的成员函数为回调函数
- 定义和实现一个类的成员函数为回调函数
- 如何实现类的成员函数作为回调函数
- 如何实现类的成员函数作为回调函数
- 如何实现类的成员函数作为回调函数
- 如何实现类的成员函数作为回调函数
- 如何定义与实现一个类的成员函数的回调函数