【发布时间】:2012-08-27 18:03:07
【问题描述】:
我的班级如下:
#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);
}
第一个例子的错误解释是什么?
【问题讨论】:
标签: c++ visual-studio-2010 winapi casting compiler-errors