zoukankan      html  css  js  c++  java
  • 2016-12-14:通过static关键字,使用类成员函数作为回调函数

    #include <iostream>
    
    using namespace std;
    
    class Callee
    {
    public:
        void PrintInfo(int i)
        { cout << "printf info " << i << endl; }
        
        static void OnCallback(void *arg, int i)
        {
            Callee *callee = static_cast<Callee*>(arg);
            callee->PrintInfo(i);
        }
    };
    
    typedef void(*CallbackFunctor)(void*, int);
    
    class Caller
    {
    public:
        void SetCallback(CallbackFunctor func, void *arg)
        {
            m_callBack = func;
            m_callee = arg;
        }
        
        void DoCallback(int i)
        {
            m_callBack(m_callee, i);
        }
    private:
        CallbackFunctor m_callBack;
        void *m_callee;
    };
    
    int main()
    {
        Caller caller;
        Callee callee;
        caller.SetCallback(Callee::OnCallback, &callee);
        caller.DoCallback(10);
    
        Caller caller2;
        Callee callee2;
        caller2.SetCallback(Callee::OnCallback, &callee2);
        caller2.DoCallback(20);
        return 0;
    }
  • 相关阅读:
    自己写库—构建库函数雏形
    暑假第二周计划
    初学Oracle
    暑假第一周计划
    读书笔记六
    读书笔记五
    读书笔记四
    读书笔记三
    读书笔记
    系统目标文档
  • 原文地址:https://www.cnblogs.com/zhouLee/p/6180271.html
Copyright © 2011-2022 走看看