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.
#ifndef CODACONGENTLEMAN_H_INCLUDED
#define CODACONGENTLEMAN_H_INCLUDED
#include"Persona.h"
#include<list>
class CodaConGentleman : private list<Persona>
{
private:
public:
void push(Persona& p)
{
list<Persona>::push_back(p);
}
Persona& pop()
{
list<Persona>::iterator x = list<Persona>::begin();
Persona daEstrarre = (*x);
for(list<Persona>::iterator it=list<Persona>::begin();it!=list<Persona>::end();it++)
{
if((*it).IsGentleman() == true)
{
for(list<Persona>::iterator jt=it++;jt!=list<Persona>::end();jt++)
{
if((*jt).IsGentleman() == false)
{
// che devo fare????????
}
}
}
list<Persona>::pop_front();
return daEstrarre;
}
friend ostream& operator<<(ostream& out,const CodaConGentleman& c)
{
for(list<Persona>::const_iterator it=c.list<Persona>::begin();it!=c.list<Persona>::end();it++)
{
out<<(*it)<<endl;
}
return out;
}
};
#endif // CODACONGENTLEMAN_H_INCLUDED