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

  FORUM HardWare.fr
  Programmation
  C++

  Appel de fonction static dans fonction template

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Appel de fonction static dans fonction template

n°952873
mynab
Posté le 14-01-2005 à 08:36:32  profilanswer
 

Bonjour,
 
je ne sais pas pourquoi mais quelque chose m'echappe. Il me semble avoir deja fait ca des centaines de fois mais le code ci-dessous ne compile pas. Quelqu'un peut me dire quelle est la syntaxe correcte? VC++ ne trouve pas la fonction static_function dans la classe T alors que celle-ci existe.
 

Code :
  1. template <typename T> void function(T& t, int dummy)
  2. {
  3.     t = T::static_function(dummy);
  4. }


 
Ce code la par contre compile:
 

Code :
  1. template <typename T> void function(T& t, int dummy)
  2. {
  3.     t = t.static_function(dummy);
  4. }


 
Mais bon ma fonction est statique donc je ne vois pas pourquoi je ne pourrais pas utiliser T::static_function.
 
Je precise juste que function est une fonction membre (template donc) d'une classe qui n'est pas template elle.
 
Merci
mynab


Message édité par mynab le 14-01-2005 à 08:55:36
mood
Publicité
Posté le 14-01-2005 à 08:36:32  profilanswer
 

n°952882
docmaboul
Posté le 14-01-2005 à 08:49:44  profilanswer
 

dans function, t est déclarée en const. Aussi, à moins d'avoir un operator = tordu, à votre place j'aurais des doutes sur la validité de la ligne commençant par t =

n°952885
mynab
Posté le 14-01-2005 à 08:55:22  profilanswer
 

Oups pardon il faut enlever les const. Ils n'y sont pas en fait dans mon code. Je les enleve du premier post. Ma question est donc toujours valide :)

n°952891
nathan_g
Posté le 14-01-2005 à 09:04:05  profilanswer
 

Avec Visual 6.0, j'ai aussi eu des problèmes avec les static et template. Apparemment, il n'est pas possible de définir des méthodes static templates dans une classe quelconque. Il faut définir des méthodes static dans une classe template pour que ce soit aceptable.
Tout ca pour te dire que cela vient peut-être simplement de Visual. Si tu as un autre compilateur sous la main ou que tu peut utiliser Visual 7.0, tu aura plus d'indications sur ton problème.

n°952903
mynab
Posté le 14-01-2005 à 09:24:27  profilanswer
 

Je vais regarder avec un autre compilo mais je suis deje en VC++ .NET 2003 (7.1 donc) donc pas d'upgrade possible de ce cote la :)

n°952905
mynab
Posté le 14-01-2005 à 09:31:26  profilanswer
 

Hum. Pour essayer avec un autre compilo j'ai ecrit un petit bout de code pour faire la meme chose et meme sous VS 7.1 ca compile... Doit avoir un probleme avec les classes dans mon programme original (qui sont des classes CORBA generees par ACE/TAO). Vais regarder ca de plus pres mais bon je sens que c'est encore un truc qui va gaver...
 

Code :
  1. class A
  2. {
  3. public:
  4.    A(int a) { _a = a; }
  5.    static A a() { return A(2); };
  6.    int _a;
  7. };
  8. class B
  9. {
  10. public:
  11.    template <typename T> void b(T& t)
  12.    {
  13.       t = T::a();
  14.    }
  15. };
  16.  
  17. int _tmain(int argc, _TCHAR* argv[])
  18. {
  19.    A a(1);
  20.    B b;
  21.    b.b(a);
  22.    return 0;
  23. }


 
mynab


Message édité par mynab le 14-01-2005 à 09:31:38
n°952906
nathan_g
Posté le 14-01-2005 à 09:31:35  profilanswer
 

Ah, OK, effectivement, c'est plus étonnant comme problème si tu as un compilateur récent.


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

  Appel de fonction static dans fonction template

 

Sujets relatifs
recherche d'une fonctionappelle une fonction du shell unix dans mawk
[JAVA] RMI : Le serveur peut-il exécuter une fonction cliente ?Utilisation fonction md5crypt (ou crypter en md5 unix)
Appel d'une fenêtre de windows ?spécialisation de fonctions membres (template) d'une classe template
écrir dans un memo en fonction de ce ki est cochéEffacer des rep en fonction de leur age
Effacer des reps en fonction de leur dateFonction pour extraire nom d'un fichier
Plus de sujets relatifs à : Appel de fonction static dans fonction template


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