我有一个无法解释的向量超出范围错误!
for (unsigned int i = 0; i < studentsVector.size(); i++) {
bool anyFailedFacultyCourse = false;
bool anyFailedElectiveCourse = false;
// Check if all faculty courses are done
std::cout << currentSemester << std::endl;
if (currentSemester > 1) {
std::cout << "hi" << std::endl;
for (int j = 0; j < currentSemester - 1; j++) {
if (studentsVector.at(i)->getPlan().at(j).size() > 0) {
anyFailedFacultyCourse = true;
}
}
std::cout << "bye" << std::endl;
调试后,我注意到程序确实进入了第一个 for 循环,为 and 分配了适当的值AnyFailedFacultyCourse
,anyFailedElectiveCourse
打印了 int currentSemester
。它停在那里!我在以下位置放置了一个调试断点:
if (currentSemester > 1)
它甚至在它检查之前给了我一个out_of_range error
!这意味着它甚至没有进入if (currentSemester > 1)
但两者之间没有任何东西!我的意思是,当它抛出错误的地方,我对任何向量什么都没做时,它怎么会抛出类似的东西!
我知道这有点神秘,请询问您需要的任何进一步信息。
更多信息:如何声明学生向量:
std::vector<Student*> studentsVector;
currentSemester:
int currentSemester = 1;