gpt4 book ai didi

c++ - 将 'this' 指针作为 LPARAM 传递

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:19:33 25 4
gpt4 key购买 nike

我的类(class)如下:

#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);
}

第一个例子中错误的解释是什么?

最佳答案

您需要使用 reinterpret_cast 而不是 static_cast 来执行转换为完全不相关的类型。看这个When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used?有关不同类型的 C++ 转换的更多详细信息。

关于c++ - 将 'this' 指针作为 LPARAM 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12147108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com