如何将const unsigned int数组转换为int数组

时间:2012-10-08 17:14:39

标签: arrays casting integer const unsigned-integer

我想将const unsigned int*数组转换为int*数组。 但是,static_castconst_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
}

1 个答案:

答案 0 :(得分:2)

  1. const_cast无法更改类型,只能更改const ness。
  2. static_cast无法取走const,也无法在这些指针类型之间进行更改。
  3. 你想要的是:

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

    在这种情况下,您也可以使用C风格的演员阵容:

    int *b = (int *)a;