C++里的回调

来源:互联网 发布:西安爱知中学怎么样 编辑:程序博客网 时间:2024/06/06 01:49

程序设计在某些时候,是需要用到回调的,一般用来接触模块或类之间的耦合,提高扩展性。C里的回调,直接用函数指针,在C++中,如果回调的是全局函数或类的静态函数,也可以直接用函数指针,但涉及到具体对象的回调,直接函数指针的回调就行不通了。这时候,需要包装一下,把成员函数和类对象包装在一起。

typedef void (*dataConvert)(variant var);

需要回调某类的成员函数时,

class A{

public:

void dataConvert(variant var);

};

A a;

这时候类的成员函数和回调函数可以把类对象包进去。

typedef void (*dataConvert)(void* object, variant var);

class A{

public:

static void Wrapper_Call_Back_dataConvert(void* object, variant var)

{

A* pObject = static_cast<A*>(object);

pObject->dataConvert(var);

}

private:

void dataConvert(variant var);

};

这样,宿主只需要知道一个对象指针

原创粉丝点击