44Fermer46
deleted2Le 03/01/2016 à 17:45
Merci beaucoup ! Pour ton avis sur les templates, pas de soucis, ça m'a l'air clair. Probablement pour ça que j'ai tourné le dos à la STL.
Zeph (./44) :
l'une ne peut pas magiquement utiliser du code de l'autre quand tu oublies de le définir. Après compilation, c'est la même chose que si tu avais déclaré deux classes ResourceHolderA et ResourceHolderB sans aucune relation entre elles.
En fait, c'était pas impossible pour moi, pour une raison très simple : le compilateur pourrait très bien utiliser les méthodes "générales" du template avec les types utilisés ici et là, et ne remplacer celles qui sont spécialisées que quand elles sont fournies.

Dans ce cas, j'aurais eu deux classes avec leurs méthodes distinctes (une pour les surfaces, une autre pour les textures), mais les destructeurs génériques auraient été zappés et remplacés par les spécialisations.
Comme le compilateur a tous les renseignements dans le template pour générer les autres méthodes, j'ai pensé que ce n'était pas nécessaire de lui préciser.

Mais bon, on est pas à une redondance près avec ces templates, quand je vois quelque chose comme template<typename restype> ResourceHolder<restype>::ResourceHolder(restype resource), je trouve qu'il y a déjà un <restype> en trop.