我正在为我的系统编程课程做作业。我必须实施大学模拟。我有一个 Course 抽象类和它的子类 ComputerScienceCourse (以及一堆其他不影响我要问的子类)。我有一个 Student 抽象类和它的子类 ComputerScienceStudent (以及一堆不影响我要问的其他子类)。在 ComputerScienceCourse 子类中有一个函数:
void teach(){
for(i = all students that take this course [stored in a vector of pointers to Student objects, which is a member field of the CSCourse child class, called students]){
this->students.at(i)->study(*this);
}
}
该函数调用所有上过这门课的学生的学习函数。该函数是子类 CSStudent 的成员函数
void study(Course &c){
if(this->failedclass){
c.removeStudent(this)
}
}
现在,当我检查输出时,教学函数中的循环不会为其中的所有学生调用学习函数。例如,如果我有 4 个学生在做这门课,有时它会只调用前三个的学习函数,有时它会调用第一个和最后一个学生的函数......变化。什么可能导致 for 循环不调用所有学生的学习函数?!以下是教学功能的完整代码:
for(unsigned int i=0; i<this->studentMembers.size(); i++){
this->studentMembers.at(i)->study(*this);
}