繁体   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