最近这个宣言让我很困惑。
有两个不同的文件,一个是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'
这里的问题是什么?有人可以帮忙吗?
答案 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
类。所以请在发布之前检查。