0

我想将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
}
4

1 回答 1

2
  1. const_cast不能改变类型,只能改变const
  2. static_cast不能带走const,也不能在这些指针类型之间改变。

你想要的是:

int *b = reinterpret_cast<int *>(const_cast<unsigned int *>(a));

在这种情况下,您也可以只使用 C 风格的转换:

int *b = (int *)a;
于 2012-10-08T17:27:36.120 回答