This answer说C++11有一个新特性,它允许我们初始化“可变大小的数组”,如下所示:
auto array = new double[M][N]();但是,当我尝试这样做时,我会得到以下错误:
array size in new-expression must be constant我没有忘记在-std=c++0x文件中添加.pro。我测试了另一个C++11特性,它运行得很好。
他错了吗?或者是我?
谢谢。
发布于 2015-06-28 16:25:37
C++没有这样无限制的运行时大小的数组。C++11引入了一个远程类似于C++11的特性,但它的限制要大得多。您不允许在C++中拥有VLA,这意味着C++中任何多维数组的第二个、第三个和进一步的维度必须是常量表达式。
很明显,这就是你违反的要求。您的N不是一个常量表达式。
在任何情况下,您问题的标题都是关于初始化的,而实际上您所遇到的问题根本与初始化无关。您使用的初始化语法-- () --对于C++11来说并不是什么新鲜事,它从第一语言标准开始就存在于C++中。
代码中唯一的C++11特性是auto的上述用法。但它与初始化或数组无关。
https://stackoverflow.com/questions/31101872
复制相似问题