我的類,如下所示:傳遞this指針作爲LPARAM
#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);
}
第一個例子中的錯誤的解釋是什麼?