Pb de résolution de type dans un template [Résolu] - C++ - Programmation
Marsh Posté le 29-05-2010 à 12:32:50
Si ton Container ets un Container, il doit verifier le concept correspondant et définir un type interne value_type.
Code :
|
2e solution, un Polymorphic Function Object:
Marsh Posté le 29-05-2010 à 12:51:27
Merci, je pense que je vais opter pour la première solution car ce sont en effet de "vrais" conteneurs.
Par contre je trouve la seconde solution plutôt élégante, je la garde dans un coin de ma tête. ;-)
Marsh Posté le 29-05-2010 à 13:24:31
En fait, je ne sais pas si tu sais pourquoi, mais la première solution ne semble pas tout le temps fonctionner. Ce que je trouve relativement bizarre (j'utilise des std::vector<double> ).
J'ai une machine sur laquelle les deux solutions fonctionnent et une autre (cluster de calcul) sur laquelle seule la seconde semble être accepté.
La première est rejetée à la compil par un <unresolved overloaded function type> pour std::min<typename Container::value_type>
Peut-etre la différence vient-elle de la config de gcc, voire de la version (4.4.1 sur l'un et 4.3.4 sur l'autre) ?
Marsh Posté le 29-05-2010 à 13:49:59
on ne peut pas passer de fonction template en objet fonction dans certains GCC. Je te conseille la 2e solution
Marsh Posté le 29-05-2010 à 00:01:39
Je veux faire une fonction qui prends deux containers de même taille et qui rend un container contenant la valeur min entre les deux pour chaque dimension.
1 3 5 6 2
3 1 0 8 9
--->
1 1 0 6 2
J'ai donc fait une version un peu naïve, mais j'ai un problème concernant la résolution du template de la fonction std::min.
Le "typeof(..)" est pour le moins crade. En effet, c'est spécifique à gcc il me semble.
Comment puis-je faire ça plus proprement (sans typeof en gros) ?
Si je dois absolument ajouter un second argument au template (le type contenu dans le container), y a-t-il une solution pour n'être pas obligé de spécifier explicitement le template à l'appel ?
Message édité par Lan Wezel le 29-05-2010 à 12:47:38