动态指针数组声明

时间:2014-04-23 08:20:14

标签: c++ arrays pointers dynamic declaration

最近这个宣言让我很困惑。 有两个不同的文件,一个是score.cpp,另一个是curve1.cpp。第二个班级Curve1继承自第一个班级Score

score.cpp中,我宣布:

ipScore = new int[getSize()];

这是编译正常并且没有任何问题。但是在curve1.cpp时,我声明了另一个变量:

new_ipScore = new int[getSize()];

它说'new_ipScore' : undeclared identifier

'=' : cannot convert from 'int *' to 'int'

这里的问题是什么?有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

为什么你问我们编译器是否已经说出了什么问题?!

<强>&#39; new_ipScore&#39; :未声明的标识符

此标识符在何处声明?我们看不到标识符的类型。也许你自己可以这么说?

答案 1 :(得分:2)

new_ipScore = new int[getSize()];
     

它说'new_ipScore' : undeclared identifier

'=' : cannot convert from 'int *' to 'int'

使用new int[...],您可以在堆上动态分配整数数组。返回值是指向此数组中第一个项目的指针,即int*

您可能还没有在代码中定义new_ipScore变量,因此编译器对此不了解;事实上,编译器抱怨:'new_ipScore' : undeclared identifier

只需将new_ipScore定义为int*

另请注意,在现代 C ++中,管理数组的常用方法是使用std::vector,在您的情况下std::vector<int>

答案 2 :(得分:1)

您的new_ipScore未宣布。请声明。我注意到你已经遵循了面向对象的范例。那么也许ipScore在类的private中声明了?一个疯狂的猜测是Score类。所以请在发布之前检查。