Competitor[] listOfCompetitors = new Competitor[10];
Это синтаксически неверно (по крайней мере для C / C ++) и является причиной, по которой вы получаете ошибку.Если вы хотите динамически выделить массив Competitors
, вы можете сделать
Competitor *listOfCompetitors = new Competitor[10];
, и это будет динамически выделять массив 10 Competitors
.
Пара другихпроблемы с вашим кодом:
Вы выполняете цикл с {0 ... numberOfCompetitors}
и получаете доступ к массиву listOfCompetitors
на каждом ходу.Что если numberOfCompetitors
≥ 10?Доступ к listOfCompetitors[i]
для i
≥ 10 становится UB, или неопределенное поведение .
Следующая строка приведет к утечке памяти, если она вообще скомпилируется.
listOfCompetitors [i] = новый конкурент (tempName, tempScore1, tempScore2);
Тип listOfCompetitors[i]
равен Competitor
, но new Competitor(...)
вернет aтип Competitor*
(указатель на Competitor
).Таким образом, new
здесь не является необходимым.Этого должно быть достаточно:
listOfCompetitors[i] = Competitor(tempName, tempScore1, tempScore2);
Вы не удаляете динамически выделенную память.Каждый раз, когда вы используете
new
, вы должны помнить, чтобы использовать
delete
, иначе произойдет утечка памяти.(Есть определенные исключения из этого, но не в большинстве C ++.) Вам нужно
освободить listOfCompetitors
.
Так что после того, как вы закончили использовать listOfCompetitors
(после цикла for, возможно), сделайте
delete []listOfCompetitors;
#include competitor.cpp;
это не должно компилироваться ?.Используйте кавычки вокруг имен файлов нестандартных библиотек, которые вы включаете:
#include "competitor.cpp"
.
Как предлагается в комментариях, вы можете использовать std::vector
или std::array
STL контейнеры.С ними легче работать, когда речь идет о динамических массивах, и все управление памятью для вас.(Также, поскольку вы пометили свой вопрос с помощью C ++ 11 containers, контейнеры STL были бы отличным местом для работы.)
Я настоятельно рекомендую взять книгу C ++, чтобы прочитать и /или взять онлайн-учебники, чтобы закрепить основы динамически выделяемой памяти, массивов и прочего.