1 std::string currLine;
2 std::string *posResponsesTeamNames = new std::string[league::numTeams];
3 std::string posResponsesWon[3] = { "1","2","3" };
4 team* team1;
5 team* team2;
6 bool successful = false;
7 for (int i = 0; i < league::numTeams; i++) {
8 std::string teamName = league::getName(i + 1);
9 for (i = 0; i < teamName.size(); i++) {
10 teamName.at(i) = toupper(teamName.at(i));
11 }
12 posResponsesTeamNames[i] = teamName;
13 }
Предположение : значение league :: numTeams равно 10
в строке № 2 вы создаете массив размером 10 (league :: numTeams).
в строке 7, создал счетчик локальной переменной i .
в строке 8, создав локальную переменную teamName
в строке 9 присваивает 0 i (создан в строке 7) и начинает al oop. Вы увеличиваете это в этом l oop. размер teamName может быть больше 10 ( league :: numTeams ). Предположим, 12.
Таким образом, значение i может быть больше 10 (league :: numTeams). Теперь в строке 12 вы присваиваете значение в posResponsesTeamNames в позиции i , которая сейчас равна 12 . Это назначение точно не выполнится.
Возможное решение : в строке 9 вместо i используйте int j в качестве второго счетчика на локальная переменная teamName
Я надеюсь, что это даст вам ответ.