![](/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.