You should not increment it in the for loop:
for (vector<Player>::iterator it=allPlayers.begin();
it!=allPlayers.end();
/*it++*/) <----------- I commented it.
{
if(it->getpMoney()<=0)
it = allPlayers.erase(it);
else
++it;
}
Note the portion that has been commented; it++ is not required there since it is incremented in the for-body itself.
The use of erase(), which internally utilises operator= to move items in the vector, is the cause of the error "'operator =' function is unavailable in 'Player'."
The objects of class Player must be assignable in order to use erase(), so you must implement operator= for the Player class.
In any case, you should try to stay away from raw loop1 as much as you can and choose to utilise algorithms instead.
The widely used idiom "Erase-Remove" might help make your task easier in this situation.
allPlayers.erase(
std::remove_if(
allPlayers.begin(),
allPlayers.end(),
[](Player const & p) { return p.getpMoney() <= 0; }
),
allPlayers.end()
);