错误:ISO C++ 禁止在新数组中初始化
Posted
技术标签:
【中文标题】错误:ISO C++ 禁止在新数组中初始化【英文标题】:ERROR: ISO C++ forbids initialization in array new 【发布时间】:2013-06-22 13:34:15 【问题描述】:以下是我的代码:
#include<iostream.h>
#include<conio.h>
int main()
int *x= new int[10] (0,1,2,3,4,5,6,7,8,9);//error observed here
for(int i=0;i<9;i++)
cout<<x[i];
delete[] x;
getch();
return 0;
我得到 ISO C plus plus 禁止在数组新错误中初始化 请让我知道这个错误的来源。谢谢
【问题讨论】:
如果你知道数组的内容,用int x[] = 0, ... ;
在栈上初始化它,也可以用static
...
当您开始使用较新的编译器时,请跳过使用new
并改用std::vector
,例如:std::vector<int> x0,1,2,3,4,5,6,7,8,9;
。这让您也可以跳过使用delete
。
【参考方案1】:
在 uniform initialization 的 C++ 中,您必须使用括号:
int *x= new int[10] 0,1,2,3,4,5,6,7,8,9;
【讨论】:
现在它说:预期,' or
;'在同一行的“”标记之前。
在 ideone 上运行良好。是的,我想是时候买一个新的编译器了。谢谢
@user2492461 dev c++ 中的编译器可能不支持 C++11
@user2492461 Dev-C++ 附带的默认编译器据说已经过时了。您可以安装一个新的编译器并使用它来代替环境。重要的部分是将 -std=c++11
标志添加到编译器,以启用统一初始化(因为它是 C++11 标准中的新功能)。【参考方案2】:
在构造 x 时使用括号意味着将参数传递给数组构造函数。改用大括号为数组值提供初始化器。
【讨论】:
以上是关于错误:ISO C++ 禁止在新数组中初始化的主要内容,如果未能解决你的问题,请参考以下文章
: 警告: ISO C++ 禁止变长数组‘s1’ [-Wvla]
Qt错误iso c++禁止指针和整数之间的比较-fpermissive