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