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 :
pour un mot de trois lettresCode:
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;
mais le compilo me sort l'erreur suivante pour le <motif+1>Code:
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); }
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 :Citation:
"l'argument doit etre une expression constante"
Code: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 ?