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_castconstを削除することも、それらのポインタタイプ間で変更することもできません。

あなたが望むように見えるものは次のとおりです。

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

この場合、Cスタイルのキャストを使用することもできます。

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