我的班级如下:
#include <Windows.h>
class MyClass
{
void A();
static BOOL CALLBACK proc(HWND hwnd, LPARAM lParam);
};
void MyClass::A()
{
EnumChildWindows(GetDesktopWindow(), MyClass::proc, static_cast<LPARAM>(this));
}
BOOL CALLBACK MyClass::proc(HWND hwnd, LPARAM lParam)
{
// ...
return TRUE;
}
当我尝试在 Visual C++ 2010 中编译它时,我收到以下编译器错误:
错误 C2440:“static_cast”:无法从“MyClass *const”转换为“LPARAM”没有可以进行此转换的上下文
如果我更改MyClass::A
如下定义,则编译成功:
void MyClass::A()
{
EnumChildWindows(GetDesktopWindow(), MyClass::proc, (LPARAM)this);
}
第一个示例中的错误的解释是什么?