【发布时间】:2012-09-28 23:28:40
【问题描述】:
我想将 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
}
【问题讨论】:
-
那是你的真实代码吗?
getArray甚至没有return声明。除此之外,返回一个局部变量的地址(就像你打算做的那样)是个坏消息。 -
@CarlNorum
getArray()只是为了替换对我无法控制的更大库的调用。 -- 我同意传递原始指针并不好。 -
传递指针很好。返回指向局部变量的指针不是。为什么不直接用
static声明a?那么它将是正确的,不会混淆未来的读者。
标签: arrays casting integer constants unsigned-integer