我有两个类,Person 和 Student,其中 Person 是基类,Student 是派生类。不允许对 Person 类或 main 函数进行任何更改。请注意,Student 继承了 Person 的所有属性。一个学生类构造函数,它有参数:一个字符串,名字一个字符串,姓一个整数,id。测试分数的整数数组(或向量), 。char calculate() 方法,计算学生对象的平均值并返回代表其计算平均值的成绩字符。样本输入-
Heraldo Memelli 8135627 2 100 80
预期输出-
Name: Memelli, Heraldo ID: 8135627 Grade: O
我得到的错误是在声明构造函数时,你能解释一下为什么吗?还有其他你会建议的方法吗?提前致谢。这是我的代码-
#include <iostream>
#include <vector>
using namespace std;
class Person {
protected:
string firstName;
string lastName;
int id;
public:
Person(string firstName, string lastName, int identification) {
this - > firstName = firstName;
this - > lastName = lastName;
this - > id = identification;
}
void printPerson() {
cout << "Name: " << lastName << ", " << firstName << "\nID: " << id << "\n";
}
};
class Student: public Person {
private: vector < int > testScores;
public: Student(string firstName, string lastName, int identification, vector < int > & scores) {
for (int i = 0; i < & scores.size(); i++)
this - > testScores.pushback( & scores[i]);
}
char calculate() {
int avg, sum = 0, count = 0;
for (int i = testScores.begin(); i < testScores.size(); i++) {
sum = sum + testScores[i];
count++;
}
avg = sum / count;
if (avg >= 90 && avg <= 100)
return ('O');
else if (avg >= 80 && avg < 90)
return ('E');
else if (avg >= 70 && avg < 80)
return ('A');
else if (avg >= 55 && avg < 70)
return ('P');
else if (avg >= 40 && avg < 55)
return ('D');
else if (avg0 < 40)
return ('T');
}
};
int main() {
string firstName;
string lastName;
int id;
int numScores;
cin >> firstName >> lastName >> id >> numScores;
vector < int > scores;
for (int i = 0; i < numScores; i++) {
int tmpScore;
cin >> tmpScore;
scores.push_back(tmpScore);
}
Student * s = new Student(firstName, lastName, id, scores);
s - > printPerson();
cout << "Grade: " << s - > calculate() << "\n";
return 0;
}