在c ++中,我从另一个函数中得到一个HANDLE类型ID,它似乎是十六进制的,我想把它转换为十进制。
HANDLE id = getCurrentID();
int decimalID = static_cast<int>( id );
但是第二行给出了这个错误:
Cannot convert from 'HANDLE' to 'int'.
这是我第一次遇到HANDLE
类型。有人可以帮忙解释一下吗?谢谢。
更新
我使用的是Windows XP和Visual Studio 2010.
答案 0 :(得分:2)
Windows上的HANDLE
是一个无效指针
要制作int
(unsigned long
等),您无法使用static_cast
,
你需要一个reinterpret_cast
。
但是,任何int类型既不是十六进制也不是十进制,只是一个数字
这可以用两种方式表达......
答案 1 :(得分:2)
我猜你在Windows
,因为HANDLE
是一个微软通常使用的名称。
HANDLE
类型是指向对象(未指定类型)的指针,并传递给其他函数以对该对象执行操作。一般来说,没有必要直接操纵它。
我不确定您为什么要将其转换为int
,因为通常看起来并不常见,但您可以使用C风格的转换来执行此操作,或{{1}如另一个答案所述。
如果您想了解这些Microsoft类型名称背后的真实类型,可以查看their documentation。
答案 2 :(得分:1)
HANDLE基本上是无效的*即指针类型你可以将HANDLE转换为void *然后转换为int,如果你愿意的话