Ваша конкретная проблема в том, что в вашем классе Player
нет оператора присваивания.Вы должны сделать «Player» копируемым или подвижным, чтобы удалить его из вектора.Это связано с тем, что вектор должен быть непрерывным и, следовательно, должен переупорядочивать элементы, чтобы заполнить пробелы, созданные при удалении элементов.
Также:
Использовать алгоритм std
allPlayers.erase(std::remove_if(allPlayers.begin(), allPlayers.end(), [](const Player& player)
{
return player.getpMoney() <= 0;
}), allPlayers.end());
или даже проще, если у вас есть повышение:
boost::remove_erase_if(allPlayers, [](const Player& player)
{
return player.getpMoney() <= 0;
});
См. Ответ TimW, если у вас нет поддержки лямбда-выражений C ++ 11.