为什么你需要进行以下C风格的演员表?
int* ptr = static_cast<int*>(0xff); // error: invalid static_cast from type 'int'
// to type 'int*'
int* ptr = (int*) 0xff; // ok.
答案 0 :(得分:13)
static_cast
只能投放两种相关类型。整数与指针无关,反之亦然,因此您需要使用reinterpret_cast
,它告诉编译器重新解释整数的位,就像它们是指针一样(和反之亦然):
int* ptr = reinterpret_cast<int*>(0xff);
阅读以下内容以获取更多详细信息:
答案 1 :(得分:2)
在将整数转换为指针时,您需要进行C风格的转换或直接使用reinterpret_cast
,因为标准对于不相关的类型都是如此。
标准要求那些演员,因为
When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used?
Regular cast vs. static_cast vs. dynamic_cast