在C++的類中使用類成員函式作為回撥函式
阿新 • • 發佈:2019-02-01
由於類有隱式的this指標,所以不能直接把類成員函式作為回撥函式使用。現用一例子來展示如何在類中使用類成員函式作為回撥函式。
此例子僅用於展示如何在類中使用類成員函式作為回撥函式
程式碼如下:
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <process.h>
class MyTest
{
public:
MyTest() {};
~MyTest() {};
void ThreadFunc();
static unsigned int __stdcall Threadcallback(PVOID Pm);
void printf();
private:
static MyTest* p;//用於在回撥函式中呼叫類成員函式
};
void MyTest::ThreadFunc()
{
//第四個引數自定義,多個引數可通過結構體傳遞
_beginthreadex(NULL, 0, Threadcallback, NULL, 0, NULL);
}
MyTest* MyTest::p = NULL;
unsigned int __stdcall MyTest::Threadcallback(PVOID Pm)
{
std ::cout << "回撥函式" << std::endl;
//呼叫了非靜態成員函式,在這個函式裡面實現自己的功能
p->printf();
return 0;
}
void MyTest::printf()
{
std::cout << "測試函式" << std::endl;
}
int main()
{
MyTest mytest = MyTest();
for(int i = 0; i < 5; i++)
mytest.ThreadFunc();
system("pause" );
return 0;
}