This answer说C ++ 11具有新功能,允许我们初始化“可变大小的数组”,如下所示:
auto array = new double[M][N]();
但是当我尝试这样做时,我得到以下错误:
array size in new-expression must be constant
我没有忘记在.pro文件中添加-std=c++0x
。我测试了另一个C ++ 11功能,它运行得很好。
他错了吗?还是我?
感谢。
答案 0 :(得分:2)
C ++没有这种不受限制的运行时大小的数组。 C ++ 11引入了类似于C VLA的远程功能,但它受到的限制非常有限。您不允许在C ++中使用VLA的VLA,这意味着C ++中任何多维数组的第二,第三和更多维度必须是常量表达式。
显然,这是您违反的要求。你的N
不是一个常数表达式。
在任何情况下,您的问题标题都涉及初始化,而实际上您遇到的问题与初始化无关。您使用的初始化语法 - ()
- 对于C ++ 11来说并不新鲜,它自第一语言标准以来就存在于C ++中。
代码中唯一的C ++ 11功能是auto
的上述用法。但它与初始化或数组无关。