为什么reinterpret_cast (lParam);产生C2440错误?

问题描述 投票:0回答:1

我有一个用于签名的C ++ / MFC / 32位的典型Windows消息处理程序LRESULT CMyFrame::OnMyMessage(WPARAM wParam, LPARAM lParam)

我已经写了这两行,在第一行中胜过第二行:

int iError = reinterpret_cast<int>(lParam);
int iWorks = (int)lParam;

我首先收到C2440错误:错误C2440:“ reinterpret_cast”:无法从“ LPARAM”转换为“ int”

但是第二个可以编译

这是C ++,而不是C,因此我更喜欢第一个而不是第二个。我在做什么错?

c++ visual-studio visual-studio-2008 mfc reinterpret-cast
1个回答
3
投票

[reinterpret_cast验证它可以在编译时重新解释底层的位结构,并且看到您正在尝试将LPARAM更改为int,并且不喜欢它。

改为尝试static_cast

© www.soinside.com 2019 - 2024. All rights reserved.