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

  FORUM HardWare.fr
  Programmation
  C++

  Problème syntaxique de définition de template pour une fonction membre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème syntaxique de définition de template pour une fonction membre

n°926986
peak
Posté le 18-12-2004 à 17:46:15  profilanswer
 

Bonjour à tous  :) ,
 
j'ai un bête problème de syntaxe pour lequel je ne trouve pas de solution.
Voici un petit exemple représentatif du problème que je me pose :
 

Code :
  1. //Si je veux avoir exactement le même resultat que ceci :
  2. template <class VarType>
  3. class MyClass{
  4.      VarType var;
  5. public:
  6.      template<ArgType>
  7.      void fctMembre(VarType _var, ArType arg1){
  8.             var=_var;
  9.             if(_var==(VarType) arg1)
  10.                   cout<<"pwet";
  11.      }
  12. }
  13. void main(){
  14.     MyClass<unsigned> A;
  15.     A.fctMembre (1, (char) 1);
  16. }
  17. //en sortant le corp de ma fonction membre de la declaration :
  18. template <class VarType>
  19. class MyClass{
  20. VarType var;
  21. public:
  22. template<class ArgType>
  23. void fctMembre(VarType, ArgType );
  24. };
  25. //ce double template passe sous dev-c++ mais pas sous MS visual 6.0  
  26. template <class VarType>
  27. template <class ArgType>
  28. void MyClass<VarType>::fctMembre(VarType _var, ArgType arg1){
  29. var=_var;
  30. if(_var==(VarType) arg1)
  31.  cout<<"pwet";
  32. }


 
Je me demandais si c'est une syntaxe standard (et donc une fois de plus VC 6.0 qui pue, sachant que la première solution passe sans problème) ou existe-il une autre manière portable d'avoir le même résultat?

mood
Publicité
Posté le 18-12-2004 à 17:46:15  profilanswer
 

n°927012
xterminhat​e
Si vis pacem, para bellum.
Posté le 18-12-2004 à 18:21:25  profilanswer
 

Tu peux aussi simplifier en faisant :

Code :
  1. template<typename VarType, typename ArgType>
  2. struct MaClass ....


---------------
Cordialement, Xterm-in'Hate...
n°927077
peak
Posté le 18-12-2004 à 19:39:38  profilanswer
 

Je sais bien mais le but ici est justement d'eviter ça.  :ange:  
Je ne veux pas surcharger le code d'instanciation de ma classe avec un type qui n'est utilisé que dans une seule de mes fonctions...

n°927129
xterminhat​e
Si vis pacem, para bellum.
Posté le 18-12-2004 à 21:23:59  profilanswer
 

Tu es obligé d'utiliser le compilateur de VC6 ?


---------------
Cordialement, Xterm-in'Hate...
n°927306
peak
Posté le 19-12-2004 à 03:17:19  profilanswer
 

Pour l'instant oui, mais la question est surtout de savoir si c'est bien comme ça que je suis sensé le définir?
 
Et si oui, se sera une raison de plus pour me dépêcher d'abandonner VC6.

n°927313
Lam's
Profil: bas.
Posté le 19-12-2004 à 09:13:48  profilanswer
 

peak a écrit :

Pour l'instant oui, mais la question est surtout de savoir si c'est bien comme ça que je suis sensé le définir?
 
Et si oui, se sera une raison de plus pour me dépêcher d'abandonner VC6.


 
Oui, les fonctions templates membres ne peuvent être définies qu'à l'intérieur de la déclaration de la classe dans VC++ 6.  :(


Message édité par Lam's le 19-12-2004 à 09:15:49
n°927321
xterminhat​e
Si vis pacem, para bellum.
Posté le 19-12-2004 à 10:40:06  profilanswer
 

Je comprends pas pourquoi les gens s'acharnent à utiliser le compialteur VC6 lorsque celui de VC7 est dispo gratuitement et fonctionne avec l'IDE de VC6.


---------------
Cordialement, Xterm-in'Hate...
n°927323
Lam's
Profil: bas.
Posté le 19-12-2004 à 10:45:33  profilanswer
 

xterminhate a écrit :

Je comprends pas pourquoi les gens s'acharnent à utiliser le compialteur VC6 lorsque celui de VC7 est dispo gratuitement et fonctionne avec l'IDE de VC6.


 
Entre autres: Compatibilité binaire avec les milliards de DLLs disponibles qui utilisent les MFC.  
 
Et d'autre part, le code produit est très très stable après 6 service packs: tu es sûr de ce que tu produit. Donc il n'y a pas de raison de changer de compilo juste pour le plaisir d'avoir "plus de syntaxe" (même si, certes, c'est de la syntaxe standard), sinon, autant sauter à java ou c#.

n°927364
cricri_
Posté le 19-12-2004 à 12:36:09  profilanswer
 

Les MFC c'est mal ...

n°927410
peak
Posté le 19-12-2004 à 13:32:20  profilanswer
 

xterminhate a écrit :

Je comprends pas pourquoi les gens s'acharnent à utiliser le compialteur VC6 lorsque celui de VC7 est dispo gratuitement et fonctionne avec l'IDE de VC6.


 
C'est vrai je ne comprend pas non plus  :sweat:, je vais m'occuper de ça en rentrant ce soir....
 
Merci pour vos réponses!

mood
Publicité
Posté le 19-12-2004 à 13:32:20  profilanswer
 

n°927415
nathan_g
Posté le 19-12-2004 à 13:34:48  profilanswer
 

Salut peak.
 
Je lie ce post en diagonal, mais, une fois de plus, je vois wue VC6 plante dans la compilation de programme simple. Je viens de connaître des problèmes avec l'utilisation de la STL et des templates.
 
Pour les templates, je ne pouvais pas utiliser de méthode template static dans une classe Article. Le compilateur le refusait avec un joli INTERNAL COMPILER ERROR. Je l'ai contourné en définissant Article comme une classe template et en utilisant des méthodes non templates dans cette classe template. Ca marche et ca s'exécute mais ce n'est pas propre.
 


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

  Problème syntaxique de définition de template pour une fonction membre

 

Sujets relatifs
[Borland C++ Builder] - Problème avec TSaveDialogProblème pour quitter un tableau dynamique d'images
Sortir une variable d'un fonction ?probleme htaccess
probleme avec type date et heureProbleme avec Firefox
Problème avec EASY PHP[VBA Excel] [Résolu] Problème de librairies de fonctions vba
Problème redirection avec headerComment regler un probleme d'impression ?
Plus de sujets relatifs à : Problème syntaxique de définition de template pour une fonction membre


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