簡體   English   中英

C ++指針和類成員的關系如何工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM