![](/img/trans.png)
[英]How a C++11 constexpr constructor fully initialize a C-style array from a pointer?
[英]How can I initialize array in a C++11 style?
这个答案说C ++ 11具有新功能,使我们可以像这样初始化“可变大小的数组”:
auto array = new double[M][N]();
但是,当我尝试执行此操作时,出现以下错误:
array size in new-expression must be constant
我没有忘记在.pro文件中添加-std=c++0x
。 我测试了C ++ 11的其他功能,并且工作正常。
他错了吗? 还是我
谢谢。
C ++没有运行时大小不受限制的数组。 C ++ 11引入了一项与C VLA远程相似的功能,但它的功能明显受限。 不允许在C ++中使用VLA的VLA,这意味着C ++中任何多维数组的第二,第三和更进一步的维必须是常量表达式。
显然,这是您违反的要求。 您的N
不是常数表达式。
无论如何,您的问题的标题都是关于初始化的 ,而实际上,您遇到的问题根本与初始化无关。 您使用的初始化语法- ()
-对于C ++ 11来说不是新的,它自从最早的语言标准开始就存在于C ++中。
代码中唯一的C ++ 11功能是上述auto
用法。 但这与初始化或数组无关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.