il problema credo sia nell'apertura dei vari txt files "destinazioniroma", "destinazionimilano", e con il push_back, perchè il file .txt "aeroportidisponibili" me lo legge e stampa a video tranquillamente,,,,

il main è

codice:
int main(){
	chooseToDo(chooseAirport());

	return 0;
}
le funzioni chiamate sono

codice:
Airport* chooseAirport(){
	string linea;
	int aeroporto;
	cout<<"scegli il numero corrispondente all'areoporto desiderato"<<endl;
	ifstream read("aeroportidisponibili.txt", ios::in);
	if(read){
		while(!read.eof()){               //qui funziona normalmente 
			getline(read,linea,'\n');
			cout<<linea<<endl;
		}
		read.close();
	}
	cin>>aeroporto;
	switch(aeroporto){
	case 1:
	{
		Airport*Roma;
		Roma=new Airport();
		vector <string> filedestination;
		string name;
		name="Roma";
		ifstream read("destinazioniroma.txt", ios::in);
			if(read){              //
si blocca qui
string str;
while(!read.eof()){
getline(read,str,'\n');
filedestination.push_back(str);
}
read.close();
}


Roma->setName(name);
Roma->setDestinations(filedestination);

return Roma;
break;
}
case 2:
{
Airport* Milano;
Milano=new Airport();
vector <string> filedestination;
string name;
name="Milano";
ifstream read("destinazionimilano.txt", ios::in);
if(read){
string str;
while(!read.eof()){
getline(read,str,'\n');
filedestination.push_back(str);
}
read.close();
}

Milano->setName(name);
Milano->setDestinations(filedestination);
return Milano;
break;
}
case 3:
{
Airport*Pisa;
Pisa=new Airport();
vector <string> filedestination;
string name;
name="Pisa";


ifstream read("destinazionipisa.txt", ios::in);
if(read){
string str;
while(!read.eof()){
getline(read,str,'\n');
filedestination.push_back(str);
}
read.close();
}
Pisa->setName(name);
Pisa->setDestinations(filedestination);
return Pisa;
break;
}
case 4:
{
Airport*Bologna;
Bologna=new Airport();
vector <string> filedestination;
string name;
name="Bologna";


ifstream read("destinazionibologna.txt", ios::in);
if(read){
string str;
while(!read.eof()){
getline(read,str,'\n');
filedestination.push_back(str);
}
read.close();
}
Bologna->setName(name);
Bologna->setDestinations(filedestination);
return Bologna;
break;
}
case '0':
{

break;
}



}return 0;



}



e poi la funzione dovrebbe proseguire con chooseToDo, che non ho ancora completato

codice:
void chooseToDo(Airport*name){

	bool end=false;



		cout<<"aeroporto di "<<name->getName()<<endl;
		cout<<"destinazioni disponibili\n"<<endl;
        for(unsigned int i=0;i<(name->getDestinations()).size();i++){
        	cout<<(name->getDestinations())[i];
        }




		do{
		int choice;
		cout<<"Cosa vuoi fare?"<<endl;
		cout<<"1.Inserisci nuovo volo; 2.Cancella un volo;3.Prenota un volo; 0.Esci"<<endl;
		cin>>choice;
		Airport*airport;
		switch(choice){
		case 1:
		{
			airport->createFlight(name);
			break;
		}
		case 2:
                ........
                    ........... 
-.............(altro)
}