, как было сказано в примечании, просто используйте цикл, например:
if(numberOfWarrior>0) {
int firstIndex = 0.
for (;;) {
try {
enterWarrior(firstIndex, turnOfPlayer, numberOfWarrior,"warrior");
// if we are here that means all is ok, go out of the loop
break;
}
catch (int i) {
cout << "Invalid name of user. You can only choose letters or numbers. Try again please." << endl;
firstIndex = i;
}
}
}
Предупреждение в void enterWarrior(int index, vector<Hero*> v,int numOfWarrior, std::string Type)
, вектор задается значением, поэтому enterWarrior изменяет копия вектора, поэтому измените его на void enterWarrior (int index, vector & v, int numOfWarrior, std :: string Type) `
Type.compare("warrior")==0
и т. Д. Не очень легко прочитать, вы можете заменить их на (Type == "warrior")
и т. д., мы на C ++, а не на Java
Некоторые 'if' могут быть 'else if', чтобы ничего не сравнивать, когда предыдущее 'if' было истинным.Окончательный else кажется отсутствующим также в случае, если Type не является ожидаемым, чтобы указать на проблему независимо от того, как