我想将const unsigned int*
数组转换为int*
数组。
但是,static_cast
和const_cast
会失败。
const unsigned int* getArray()
{
static unsigned int a[3];
a[0] = 0;
a[1] = 1;
a[2] = 2;
return a;
}
int main()
{
const unsigned int * a = getArray();
const_cast<int*>(a); // fail
static_cast<int*>(a); // fail
}
答案 0 :(得分:2)
const_cast
无法更改类型,只能更改const
ness。static_cast
无法取走const
,也无法在这些指针类型之间进行更改。你想要的是:
int *b = reinterpret_cast<int *>(const_cast<unsigned int *>(a));
在这种情况下,您也可以使用C风格的演员阵容:
int *b = (int *)a;