私は次のようなクラスを持っています:
#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);
}
最初の例のエラーの説明は何ですか?