[英]C++ How does a relation of pointers and class members work?
在下面的示例中,我做了一個非常簡單的類,有些事情我不理解。
class Keylogger {
public:
void Hook();
void Unhook();
private:
HHOOK hHook;
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);
};
void Keylogger::Hook() {
HINSTANCE hInstance = GetModuleHandle(NULL);
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, this->LowLevelKeyboardProc, hInstance, 0);
}
void Keylogger::Unhook() {
UnhookWindowsHookEx(hHook);
}
如果我理解正確,則在定義類對象並在操作結束后將其銷毀時,該類的所有成員都是本地的(在堆棧中)。 (功能退出)。
在上面的示例中,我試圖將HHOOK分配給私有成員hHook,從而收到錯誤: “非標准語法;使用'&'創建指向成員的指針”
為什么不能僅以這種方式分配變量?錯誤的確切含義是什么?
在那種情況下,應該創建指向成員的指針,並且應該如何將它們與this->一起使用? 謝謝!
在此通話中:
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, this->LowLevelKeyboardProc, hInstance, 0);
您嘗試傳遞成員函數: this->LowLevelKeyboardProc
,就好像這是一個自由函數(非成員)一樣。 這將不起作用,成員函數不像自由函數。 您只能使用類實例指針和成員函數指針來調用它們。
這個API函數SetWindowsHookEx
需要自由函數,因此您應該將LowLevelKeyboardProc設為靜態,或者將其移到類之外。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.