N'oublie pas que les templates génèrent du code pour chaque paramètre template différent. Cela veut dire que si le compilateur n'a pas le code de URI::splitScheme lorsque tu l'utilise, alors il ne pourra pas le générer tout seul. Il faut voir ça un peu comme une macro: il faut qu'elle soit définie pour être utilisable.
en C++03 en tout cas. Normalement, cela n'est plus nécessaire en C++11 (le standard oblige à ce que ça marche dans ton cas), mais gcc ne le supporte pas (ou du moins, pas à ma connaissance).
En C++03, tu à le choix entre :
- Mettre le code de splitScheme dans un header et l'inclure.
- déclarer explicitement quel intanciations tu à besoin dans URI.cpp, et utiliser export, sachant que très peu de compilos le supportent (et ceux qui le supportent pensent que c'est une mauvaise idée) à tel point que ça à été enlevé dans C++11.
# Templates et C++03
Posté par Batchyx . En réponse au message Problème de templates: undefined reference. Évalué à 3.
N'oublie pas que les templates génèrent du code pour chaque paramètre template différent. Cela veut dire que si le compilateur n'a pas le code de URI::splitScheme lorsque tu l'utilise, alors il ne pourra pas le générer tout seul. Il faut voir ça un peu comme une macro: il faut qu'elle soit définie pour être utilisable.
en C++03 en tout cas. Normalement, cela n'est plus nécessaire en C++11 (le standard oblige à ce que ça marche dans ton cas), mais gcc ne le supporte pas (ou du moins, pas à ma connaissance).
En C++03, tu à le choix entre :
- Mettre le code de splitScheme dans un header et l'inclure.
- déclarer explicitement quel intanciations tu à besoin dans URI.cpp, et utiliser
export, sachant que très peu de compilos le supportent (et ceux qui le supportent pensent que c'est une mauvaise idée) à tel point que ça à été enlevé dans C++11.Ouais, donc en gros, tu n'a pas le choix quoi.