Je cherche a faire un template qui recherche une chaine de caractere (le motif) (const) dans un tableau de char. Le but est de faire comme si j'ecrivais :
1 2 3 4
| if ( T[0] != motif[0] ) return false;
if ( T[1] != motif[1] ) return false;
if ( T[2] != motif[2] ) return false;
return true; |
pour un mot de trois lettres
1 2 3 4 5 6 7
| template<const char * motif>
MotifPresent(char * T)
{
if ( *motif == 0 ) return true;
if ( (*motif) != (*T) ) return false;
else return MotifPresent<motif+1>(T+1);
} |
mais le compilo me sort l'erreur suivante pour le <motif+1>
"l'argument doit etre une expression constante"
l'astuce consisterait a passer aussi un int stockant le nombre de parametre mais la, probleme il faut que je le donne moi meme et j'aurais voulu me contenter de l'appel suivant :
MotifPresent<"Hello">(T);
ps : autre question au sujet de la compil des templates sous builder : je les mets dans les headers et je les integre chaque fois que j'en ai besoin. Pour les classes dans la version builder 5, les fonctions membres templates doivent etre transformées en classe template (il me semble) je n'en suis pas totalement sur, est-ce mieux gérer dans cbc 6 ? 7 ?
Partager