Salve a tutti,
ho un problema con il seguente esercizio:
Utilizzare l’ereditarietà per realizzare la classe CodaConGentleman che implementa una coda di persone in cui, ad ogni estrazione, se il prossimo da servire è un uomo, questo “fa il gentleman” e lascia passare tutte le donne in coda tra lui e l’uomo successivo. Si supponga che la classe persona abbia un metodo che consenta di distinguere il sesso. In particolare: (a) si implementi l’interfaccia della classe e i soli metodi di inserimento/estrazione. Note: Solo l’uomo in testa lascia passare le donne; è consentito l’uso di STL.
Ho pensato di fare così:
codice:
#include "CodaConGentleman.h"  void CodaConGentleman::addPersona(Persona p) {    persone.push_back(p); }  void CodaConGentleman::controlla() { int cont=0;    cout<<"lista iniziale"<<endl;    stampa();    //do{    for(list<Persona>::iterator it=persone.begin();it!=persone.end();it++)       {       cout<<"nome soggetto esaminato"<<persone.front().getNome()<<" sesso "<<persone.front().getSesso()<<endl;       cont++;       if(persone.front().getSesso()==Femmina)       {          eliminaDonne();       }  } }   void CodaConGentleman::eliminaDonne() {        do{          if(persone.front().getSesso()==Femmina)          {             cout<<"elimino nome "<<persone.front().getNome()<<" sesso "<<persone.front().getSesso()<<endl;              persone.pop_front();           }          persone.front();          cout<<"lista dopo eliminazione"<<endl;             stampa();       } while(persone.front().getSesso() == Femmina);  }  void CodaConGentleman::stampa() {    for(list<Persona>::iterator it= persone.begin(); it!=persone.end(); it++)    {       cout<<(*it).getNome()<<" "<<(*it).getSesso()<<" "<<endl;     } }  void CodaConGentleman::estrai(Persona p) {  persone.pop_back();  return ; }
Il problema è che appena trova il primo maschio continua a ciclare di continuo...Non capisco perchè il For non vada all'elemento successivo
Grazie per l'attenzione