我有一个数组,其大小是在运行时确定的。
cout<<"Enter size of array: ";
cin>>size1;
int* scores=new int[size1];
然后我填上这个数组的分数。现在我想增加它的尺寸。我创建了一个新的动态数组。
int* newScores=new int[newSize1];
such that `newSize1 > Size1
现在,我将旧分数的内容复制到newScores中:
for(int i=0; i<Size1;i++)
{newScores[i] = scores[i];
}
现在,我必须要求newScores的剩余元素添加到它中。我做了:
for(int j=size1;j<newSize1;j++)
{
newScores[j]=new int;
cout<<"Enter new score: ";
cin>>newScores[j];
}
在编译它时,我得到以下错误:
error: invalid conversion from ‘int*’ to ‘int’ [-fpermissive] newScores[size1]=new int;
发布于 2016-10-15 12:14:51
newScores[j]=new int;
是一个错误,没有必要。newscores[j]
是lvlalue int
,而new int
则返回int*
。但是您已经不需要分配它了--您在int* newScores=new int[newSize1];
表达式中这样做了。
您可以通过使用std::vector
来避免麻烦。当您将元素插入其中(使用push_back
)时,它会自动调整大小,您不必担心自己会释放内存。
发布于 2016-10-15 12:16:30
移除这一行
newScores[j]=new int;
发布于 2016-10-15 12:18:10
您不需要再次向动态数组分配新的int。此外,在使用动态数组时,需要使用delete[]删除内存。
https://stackoverflow.com/questions/40063739
复制相似问题