我想将const unsigned int*
数组转换为int*
数组。然而, static_cast
和const_cast
失败。如何将const unsigned int数组转换为int数组
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
}
那是你真正的代码? 'getArray'甚至没有'return'语句。除此之外,返回一个局部变量的地址(就像你打算这样做)是坏消息。 –
@CarlNorum'getArray()'只是将调用替换为我无法控制的更大的库。 - 我同意传递原始指针并不好。 –
传递指针很好。返回指向局部变量的指针不是。为什么不用'static'声明'a'?那么这将是正确的,不会混淆未来的读者。 –