Question d'élégance avec les templates.
Bonsoir,
J'ai un petit soucis dans la réalisation d'un gestionnaire de ressources.
J'ai crée un singleton CRessourcesManager qui charge des ressources depuis le disque avec une méthode :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
template<class T>
QSharedPointer<T> load<T>(QString filename){
QListIterator it(m_loaders);
while(it.hasNext()){
IRessourcesLoader loader = it.next();
if(loader.isValid<T>()){
return loader.load<T>(filename);
}
}
} |
IRessourcesLoader est une classe interface qui doit implémenter le chargement d'un type de données.
Donc pour chaque implémentation de IRessourcesLoader ma méthode doit vérifier si le loader est abilité à charger le type en question.
J'aimerai conserver la possibilité d'écrire n'importe qu'elle implémentation de IRessourcesLoader et de simplement avoir à l'ajouter à CRessourcesManager avant d'apeller la méthode load avec le type attendu.
Existe-t-il une méthode plus élégante ? Que d'utiliser :
Code:
1 2 3 4
|
if(loader.isValid<T>()){
return loader.load<T>(filename);
} |
Merci