c++call back

简介:
#include "stdafx.h"
struct A;

typedef void(A::*MemFuncPtr) (int* e);

class A
{
    int a;
}; 

class View : public A
{
public:
    virtual void test() { printf("test A\n"); }
};

class Window : public View
{
public:
    virtual void test() { printf("test A\n"); }
    void func(int * b) { (void)b; printf("************\n"); }
};


typedef void(*HandlerNoParam)();
typedef void(*Handler1Param)(void* receiver);
typedef void(*Handler2Param)(void* receiver, int* e);

void test1()
{
    printf("no parameter test:\n");
}

void test2(void* receiver)
{
    (void)receiver;
    printf("1 parameter test:\n");
}

void test3(void* receiver, int* e)
{
    (void)receiver;
    (void)e;
    printf("2 parameter test:\n");
}



int _tmain(int argc, _TCHAR* argv[])
{
    Handler2Param p0 = (Handler2Param)test2;
    p0(NULL, 0);

    MemFuncPtr p = (MemFuncPtr)&Window::func;
    Window a;
    (a.*p)(NULL);
    getchar();
    return 0;
}
复制代码

 本文转自莫水千流博客园博客,原文链接:http://www.cnblogs.com/zhoug2020/p/6871607.html,如需转载请自行联系原作者

相关文章
|
容器
push_back还是emplace_back?
emplace_back() 是 C++11 之后,vector容器中添加的新方法,和 push_back()一样,都是在容器末尾添加一个新的元素,相对于push_back函数,它减少了一次类的构造。不同的是emplace_back() 在效率上相比较于 push_back() 有了一定的提升。
|
11月前
Error:Elements in iteration expect to have ‘v-bind:key‘ directives
Error:Elements in iteration expect to have ‘v-bind:key‘ directives
|
11月前
|
容器
emplace_back函数和to_string函数
emplace_back函数和to_string函数
|
Linux
编译OpenJDK8:error: control reaches end of non-void function [-Werror=return-type]
编译OpenJDK8:error: control reaches end of non-void function [-Werror=return-type]
187 0
|
JavaScript
深入理解 V8 的 Call Stack
Call Stack(调用栈) 一般指计算机程序执行时子程序之间消息处理的相互调用产生的一些列函数序列,而且几乎所有的计算机程序都依赖于调用栈。
3635 0
CALL
CALL
101 0
|
JavaScript
call, call.call, call.call.call, 你也许还不懂这疯狂的call
Function.prototype.call 我想大家都觉得自己很熟悉了,手写也没问题!! 你确认这个问题之前, 首先看看 三千文字,也没写好 Function.prototype.call,
167 0
call, call.call, call.call.call, 你也许还不懂这疯狂的call
|
存储 C++ 容器
C++中push_back和emplace_back的区别
在 `C++11` 之后,`vector` 容器中添加了新的方法:`emplace_back()` ,和 `push_back()` 一样的是都是在容器末尾添加一个新的元素进去,不同的是 `emplace_back()` 在效率上相比较于 `push_back()` 有了一定的提升。
887 0
C++中push_back和emplace_back的区别