本文主要是介绍类型转换扯的淡,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天在看一位作者写的多线程文章时中间有这么一句代码:
handle[i] = (HANDLE)_beginthreadex(arg...);
_beginthreadex()这个函数返回的是一个unitptr_t
类型,而handle[i]
是一个句柄数组,所以需要一步类型转换
当时我想到如果用C++11定义的类型转换可能会比较好一点吧,不用那种C风格字符串了。于是很自然的把代码改成了下面这样
handle[i] = staic_cast<HANDLE>(_beginthreadex(arg...));
不过编译器却报错了。报错为
:不能进行从整形到指针类型的转换
后来用reinterpret_cast
搞定了
上了权威网站查了之后发现reinterpret_cast<new type>(expr)
进行type
到*type
的类型转换,中间有这么一句话
A value of any integral or enumeration type can be converted to a pointer type
至于static_cast为什么不行?
static_cast
上面给的可以用static_cast进行转换的9种情况中,并没有type to *type
参考资料:
reinterpret_cast
这篇关于类型转换扯的淡的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!