【发布时间】:2015-10-05 05:31:48
【问题描述】:
我试图在 if 语句中声明一个数组。我以这种方式编写代码,以便在 if 块退出后对象保持在范围内,但现在我有一个新问题:“获取临时数组的地址”。如何以另一种方式重写它,以便为 maskArray 分配正确的值?
int* maskArray;
if(conditional==true)
maskArray = (int[9]) {0,1,0,1,-4,1,0,1,0};
【问题讨论】:
-
(int[9]) {0,1,0,1,-4,1,0,1,0};是 C 构造,在 C++ 中是不合法的。请确认您尝试使用的语言 -
这实际上是从 C 中的“复合文字”借用的 C++ 扩展。在 C 中这是有效代码,因为临时具有自动存储持续时间。在 C++ 中,它通常不是,至少 GCC 版本的这个扩展不是,因为临时有一个表达式生命周期。