1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
// il y a probablement plus élégant, mais à la volée :
template<typename T>
bool dispatch_fichier(Fichier*p_fic, std::vector<T*>&vect_)
// on pourrait rajouter un static assert sur T dérive bien de Fichier (cf trait C++0X ou boost.Trait)
{
if(dynamic_cast<T*>(p_fic))
{
vect_.push_back(dynamic_cast<T*>(p_fic));
return true;
}
return false;
}
void trierFichiers(){
for(std::vector<Fichier*>::iterator it=lesFichiers.begin();it!=lesFichiers.end();it++){
if(dispatch_fichier<FichierElectronique>(*it,lesFichiersElectroniques)){
continue;
}
if(dispatch_fichier<FichierPapier>(*it,lesFichiersPapier)){
continue;
}
}
} |
Partager