Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1626 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  fonction membres et template .template

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fonction membres et template .template

n°509003
Taz
bisounours-codeur
Posté le 05-09-2003 à 21:07:08  profilanswer
 

  ce soir, juste un petit article pour vous montrer une utilisation des template qui en surprendrait plus d'un. c'est suite à un sujet de JoelF que je me suis dit que ça vous servirait: sachez que ça existe, et si un jour vous êtes perdus, que le compilo gueule des parse error alors que tout semble correct, pensez-y.
 
il s'agit de la notation  « .template » (et « ->template »). cette notation (la synthaxe tout de suite) doit être uniquement utilisée à l'intérieur de template et seulement s'ils utilisent quelque chose dépendant d'un paramètre template, ce pour éviter la confusion synthaxique entre l'argument template et l'opérateur de comparaison <
 
l'exemple tout de suite: voyez par vous même comment faire les différents appels.
 

Code :
  1. template<typename T>
  2. struct Foo
  3. {
  4.   template<typename U>
  5.   static void staticFunction()
  6.   {}
  7.   template<typename U>
  8.   void Function()
  9.   {}
  10. };
  11. struct Bar
  12. {
  13.   template<typename U>
  14.   static void staticFunction()
  15.   {}
  16.   template<typename U>
  17.   void Function()
  18.   {}
  19. };
  20. template<typename U>
  21. void fx(U u)
  22. {
  23.   u.template Function<void>();
  24.   (&u)->template Function<void>();
  25.   U::template staticFunction<void>();
  26. }
  27. int main()
  28. {
  29.   Foo<int>::staticFunction<bool>();
  30.   Bar::staticFunction<double>();
  31.   Foo<unsigned> f;
  32.   Bar b;
  33.   f.Function<void>();
  34.   (&f)->Function<void>();
  35.   b.Function<char>();
  36.   (&b)->Function<char>();
  37.   fx(f);
  38.   fx(b);
  39. }


Message édité par Taz le 05-09-2003 à 21:11:10
mood
Publicité
Posté le 05-09-2003 à 21:07:08  profilanswer
 

n°509009
schnapsman​n
Zaford Beeblefect
Posté le 05-09-2003 à 21:15:42  profilanswer
 

Qq peux m'expliquer pq les caractères '<' et '>' on été choisis pour les templates?  [:naughty]  
 
Ca aurai été mieux avec un autre couple de tokens, ce qui aurai évité ce genre d'horreurs:
 

Code :
  1. map<vector<int> >  foo;


Message édité par schnapsmann le 05-09-2003 à 21:20:28
n°509012
Taz
bisounours-codeur
Posté le 05-09-2003 à 21:21:29  profilanswer
 

parce que l'ascii est très pauvre et qu'il a déjà fallu inventé les trigraphes pour certains pays européens. et puis j'ai beau cherché, je vois pas qu'el autre symbol on aurait pu utiliser. reste ` pas très lisible, @, $, je ne vois rien d'autre.

n°509015
schnapsman​n
Zaford Beeblefect
Posté le 05-09-2003 à 21:27:03  profilanswer
 

Taz a écrit :

parce que l'ascii est très pauvre et qu'il a déjà fallu inventé les trigraphes pour certains pays européens. et puis j'ai beau cherché, je vois pas qu'el autre symbol on aurait pu utiliser. reste ` pas très lisible, @, $, je ne vois rien d'autre.


 
` '  :??:
 
et pq ne pas avoir repris "[]", ou "{}" qui n'auraient pas posé d'ambiguités syntaxiques inextricables (et pas d'ambiguité lexicale à 100%)


Message édité par schnapsmann le 05-09-2003 à 21:28:25
n°509019
Taz
bisounours-codeur
Posté le 05-09-2003 à 21:29:22  profilanswer
 

même problème avec []
 
quand aux {}, ça altère trop la lisibilité de les réutiliser


Message édité par Taz le 05-09-2003 à 21:29:38
n°509021
schnapsman​n
Zaford Beeblefect
Posté le 05-09-2003 à 21:30:16  profilanswer
 

Taz a écrit :

même problème avec []
 
quand aux {}, ça altère trop la lisibilité de les réutiliser


 
et quote/back quote?
 
le token }} n'existe pas en c++ nan?

n°509023
Taz
bisounours-codeur
Posté le 05-09-2003 à 21:31:21  profilanswer
 

à côté on voit, mais séparé, ça devient plus dur, et puis selon la police ça apparait mal, et je te dis pas le nombre de boulets qui feraient des fautes de frappes.

n°509025
Taz
bisounours-codeur
Posté le 05-09-2003 à 21:32:41  profilanswer
 

SchnapsMann a écrit :


le token }} n'existe pas en c++ nan?

si fermeture de 2 blocs

n°509032
schnapsman​n
Zaford Beeblefect
Posté le 05-09-2003 à 21:36:08  profilanswer
 

Taz a écrit :

si fermeture de 2 blocs


 
c'est jamais un token au sens de l'analyseur lexical: "}}" donne deux tokens '}'.
Ce qui est différent de ">>" qui donne un seul token décalage de bits au lieu de deux tokens '>'.

n°509036
Taz
bisounours-codeur
Posté le 05-09-2003 à 21:39:03  profilanswer
 

aujourd'hui même Gabriel Dos Reis me disait encore :

Citation :

comme les saintes écritures, la norme n'a pas besoin de raison valable
pour dicter. Il suffit qu'elle légifère. :-)


 
moi >> tout est donc une histoire de foi %oD
 

Citation :

sans la foi, tu es perdu mon fils.

mood
Publicité
Posté le 05-09-2003 à 21:39:03  profilanswer
 

n°509047
Joel F
Real men use unique_ptr
Posté le 05-09-2003 à 21:56:15  profilanswer
 

** jojo a encore dit des conneries :p **


Message édité par Joel F le 05-09-2003 à 22:04:25
n°509054
Joel F
Real men use unique_ptr
Posté le 05-09-2003 à 22:04:54  profilanswer
 

:ange: double ce soir ...
 
comment tu fait toi pour specialiser une fonction template ?

n°509055
Taz
bisounours-codeur
Posté le 05-09-2003 à 22:06:06  profilanswer
 

Joel F a écrit :

:ange: double ce soir ...
 
comment tu fait toi pour specialiser une fonction template ?

voir la réponse de GDR plus haut.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  fonction membres et template .template

 

Sujets relatifs
Petit pb de syntaxe de la fonction "echo"[Résolu] Passage d'une fonction en paramètre ?!?
[C++] Recuperer l'adresse d'une fonction virtuelle pure [modified]comment est programmée la fonction 'rafraichir' de l'explorateur ?
fonction qui redirige vers une autre page ?déclaration d'un template
SQL supprimer des données d'une table en fonction d'une autre[File_exists] equivalent de cette fonction appliquable en rézo ?
[php] Fonction INCLUDE chez Online.fr[Python] Fonction d'attente
Plus de sujets relatifs à : fonction membres et template .template


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR