要實現回調功能,可以使用C++類的成員函數指針作為回調函數的參數,然后在需要執行回調的地方調用該函數指針。
首先定義一個類,其中包含一個成員函數指針作為回調函數:
class Callback {
public:
typedef void (Callback::*CallbackFunction)();
CallbackFunction callbackFunction;
Callback() : callbackFunction(nullptr) {}
void setCallback(CallbackFunction func) {
callbackFunction = func;
}
void executeCallback() {
if (callbackFunction) {
(this->*callbackFunction)();
}
}
void callbackHandler() {
std::cout << "Callback function is called" << std::endl;
}
};
然后定義一個函數,接受一個Callback類的實例作為參數,并調用其成員函數指針:
void triggerCallback(Callback& callback) {
callback.executeCallback();
}
接著創建一個Callback的實例,并設置其成員函數指針為回調函數:
Callback callback;
callback.setCallback(&Callback::callbackHandler);
最后調用觸發回調的函數:
triggerCallback(callback);
這樣就實現了C++成員函數指針的回調功能。在實際應用中,可以用類似方式將回調函數傳遞給其他類或庫,并在特定事件發生時觸發回調。