1. 程式人生 > >在C++的類中使用類成員函式作為回撥函式

在C++的類中使用類成員函式作為回撥函式

由於類有隱式的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; }