回调函数使用方法二

class CRegAuto : public QObject
{
     Q_OBJECT
public:
    static CRegAuto *getInstance();
    static void ClearInstance();

    typedef void (CRegAuto::*Callback)(int value);
    QHash<int, Callback> cheatCommands;
    void Initialize();
    void processCallBack();
    void add(int value);
    void jian(int);
    void cheng(int);
    void chufa(int);
}

void CRegAuto::jian(int value)
{
    int b = value;
}

void CRegAuto::cheng(int value)
{
    int c = value;
}

void CRegAuto::chufa(int value)
{
    int d = value;
}

void CRegAuto::Initialize()
{
    if (cheatCommands.isEmpty())
    {
        cheatCommands[0] = &CRegAuto::add;
        cheatCommands[1] = &CRegAuto::jian;
        cheatCommands[2] = &CRegAuto::cheng;
        cheatCommands[3] = &CRegAuto::chufa;
    }
     processCallBack();
}

void CRegAuto::processCallBack()
{
    for (int i = 0; i < 4; i++)
    {
        Callback callback = cheatCommands[i];
        if (callback) {
            (this->*callback)(i);
        }
    }
}
时间: 2024-11-03 21:18:26

回调函数使用方法二的相关文章

实例介绍 Java(android) 回调函数使用方法

在Android开发中经常用到回调机制,其中最典型的就是控件被触发的实现方式,简单而言,如Button被Click后,是系统调用了OnClick方法,而我们为Button注册了OnClickListener监听器,当被触发Click后,OnClickListener中的OnClick方法就会被回调,我们就能在其中执行相应操作了. 下面举一个简单的例子介绍回调的实现方式: 回调函数使用的简单例子 程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序.程序员B要让a调用自己的程序

回调函数设计方法

引入: 你显示器不亮了,你不知道怎么弄,那你就问在外地干IT的大表哥,你大表哥告诉你修理的方法,然后需要你自己来操作. 你大表哥知道怎么弄,但是自己不去弄,而是由你去弄. 换句话说,你大表哥实现了修理你显示器的方法,但他不会自己去调用,而是由你去调用.那么你大表哥告诉你的修机器的方法就是回调函数. 在这个比喻里,你自己 作为主调方,有实际的需求--修显示器,但是没有方法,求教表哥的时候,表哥给你的方法 就是一个 函数地址,当你按照大表哥的方法执行的时候,就是 执行了一个回调函数了. 在工程设计中

回调函数案例(二)

1 #include <stdio.h> 2 #include <stdlib.h> 3 4 /**************************************** 5 * 函数指针结构体 6 ***************************************/ 7 typedef struct _OP 8 { 9 float (*p_add)(float, float); 10 float (*p_sub)(float, float); 11 float

回调函数实例—(二)

#include<stdio.h> //callbackTest.c //1.定义函数onHeight(回调函数) //@onHeight 函数名 //@height 参数 //@contex 上下文 void onHeight(double height, void *contex) { printf("current height is %lf", height); } //2.定义onHeight函数的原型 //@CallbackFun 指向函数的指针类型 //@he

JavaScript中回调函数的使用

在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A.我们就说函数A叫做回调函数.如果没有名称(函数表达式),就叫做匿名回调函数. 在实际应用中,可以这么应用,一个方法进行获取数据源,另一个方法(回调函数)可以通过数据源在页面上进行展示,可以根据具体的需求进行展示就行,如果多个地方用到这个数据源,可以写不同的回调函数,将此函数传入这个方法中即可. 来,咱们通过实例可以一目了然 获取公司信息的小例子 1.获取公司信息数据源的方法(

使用注册回调函数

我们的日常开发中会发现有时候使用回调函数能方便的提高程序兼容性和扩展性,那么具体回调函数怎么使用呢,下面做个笔记,有不正确的地方,欢迎指出. 一.C语言中的使用方法 首先使用回调函数,就会用到怎么注册回调函数这个问题.你需要告诉底层代码,它需要调用的函数是什么.那么就得事先定义好回调函数的类型. 如: typedef void (*eventHandler_f) (int param); 然后定义实现你的注册函数.注册函数的作用就是告诉底层代码,使用者想让你调用的函数是那个 #define MA

C++中类成员函数作为回调函数

注:与tr1::function对象结合使用,能获得更好的效果,详情见http://blog.csdn.net/this_capslock/article/details/38564719 回调函数是基于C编程的Windows SDK的技术,不是针对C++的,程序员可以将一个C函数直接作为回调函数,但是如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过. 普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递一个指向自身的指针给其成员函数从

c# 如何调用非托管函数3-实现回调函数

部分dll函数是需要回调的,因此我们在托管代码中调用的时候,必须先创建回调函数,然后将该函数的指针作为参数传递给dll函数. 以下以EnumWindows函数为例,演示了使用回调函数的方法: 一 找到函数签名 EnumWindows具有以下签名: BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam); 其中 lpEnumFunc 就是应用程序定义的回调函数的指针:BOOL CALLBACK EnumWindowsProc(HWND hwnd

C++领域回调函数总结&lt;一&gt; ---- 常见使用

简介: 回调函数是基于C编程的Windows SDK的技术,不是针对C++的,程序员可以将一个C函数直接作为回调函数,但是如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过.普通的C++成员函数都隐含了一个传递函数作为参数,亦即"this"指针,C++通过传递一个指向自身的指针给其成员函数从而实现程序函数可以访问C++的数据成员.这也可以理解为什么C++类的多个实例可以共享成员函数但是确有不同的数据成员.由于this指针的作用,使得将一个CALLBACK型的成员