错误: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&lt;int&gt; 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]

错误帮助:ISO C++ 禁止声明没有类型的“向量”

Qt错误iso c++禁止指针和整数之间的比较-fpermissive

错误:ISO C++ 禁止声明没有类型的“对象”

出现错误:“ISO C++ 禁止指针和整数 [-fpermissive] 之间的比较”如何解决?

如何调试“ISO C++ 禁止声明没有类型的‘汽车’”?