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

  FORUM HardWare.fr
  Programmation

  [C++] Templates

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Templates

n°101165
wpk
Posté le 16-02-2002 à 13:14:37  profilanswer
 

Une petite question sur les templates:
 
j'ai une methode :
 
template <typename T>
T  getValue(const std::string &group, const std::string &key, const T & valueByDefault)
 
le probleme c'est que j'aimerais faire plutot ca :
template <typename T>
T  getValue(const std::string &group, const std::string &key, const T & valueByDefault = T())
 
càd que la default value a une valeur par defaut  :)  
 
Le probleme c'est que VC++ 6 me sort une erreur
error C2065: 'T' : undeclared identifier  
quand je rajoute le = T()
 
du coup j'ai rien trouvé d'autre comme solution que de surcharger la 1ere methode par un
 
template <typename T>
T  getValue(const std::string &group, const std::string &key)
{
...
if (pasTrouve)
   return T();
}
 
ce qui n'est pas tres elegant, je vous le concede.
 
Ce qui me surprend le plus c'est que le meme compilo, compile sans probleme ca (tiré de la declaration de la map de la stl):
 
explicit map(const _Pr& _Pred = _Pr(), const _A& _Al = _A())
  : _Tr(_Pred, false, _Al) {}
 
Donc si qcq a une idee jsuis preneur.

mood
Publicité
Posté le 16-02-2002 à 13:14:37  profilanswer
 

n°101396
wpk
Posté le 17-02-2002 à 10:37:42  profilanswer
 

ptit up du matin

n°101397
Da True Cl​ouseau
It&#039;s good to be true
Posté le 17-02-2002 à 10:47:37  profilanswer
 

Aucun pb avec g++ ou VC++7.

n°101400
wpk
Posté le 17-02-2002 à 10:58:38  profilanswer
 

:( c'est bien ce que je craignais, faut que je change de compilo moa, le VC++ 7 est encore dispo en dl beta sur le site de crosoft ?

n°101875
Virango
Posté le 18-02-2002 à 15:02:51  profilanswer
 

wpk a écrit a écrit :

Une petite question sur les templates:
 
j'ai une methode :
 
template <typename T>
T  getValue(const std::string &group, const std::string &key, const T & valueByDefault)
 
le probleme c'est que j'aimerais faire plutot ca :
template <typename T>
T  getValue(const std::string &group, const std::string &key, const T & valueByDefault = T())
 
càd que la default value a une valeur par defaut  :)  
 
Le probleme c'est que VC++ 6 me sort une erreur
error C2065: 'T' : undeclared identifier  
quand je rajoute le = T()
 
du coup j'ai rien trouvé d'autre comme solution que de surcharger la 1ere methode par un
 
template <typename T>
T  getValue(const std::string &group, const std::string &key)
{
...
if (pasTrouve)
   return T();
}
 
ce qui n'est pas tres elegant, je vous le concede.
 
Ce qui me surprend le plus c'est que le meme compilo, compile sans probleme ca (tiré de la declaration de la map de la stl):
 
explicit map(const _Pr& _Pred = _Pr(), const _A& _Al = _A())
  : _Tr(_Pred, false, _Al) {}
 
Donc si qcq a une idee jsuis preneur.  




 
L'erreur ne vient pas de ton type template mais du fait que tu utilises un passage par reference dans la déclaration du type de ton dernier paramètre. Supprime le & et cela fonctionne:
 
template <typename T>
T  getValue(const std::string &group,  
            const std::string &keyconst ,
            T  valueByDefault = T());
 
Avec VC++ 6.0 ca compile chez moi.

n°101937
wpk
Posté le 18-02-2002 à 17:14:12  profilanswer
 

:jap: ah, j'y avais pas pensé d'essayer de passer par valeur.
Mais ce que je ne comprends pas c'est pourquoi dans le cas de la map par exemple
explicit map(const _Pr& _Pred = _Pr(), const _A& _Al = _A())  
 : _Tr(_Pred, false, _Al) {}  
 
, le compilo accepte le type de construction qu'il me refuse à moi (du moment ou sur le type T je lui fournis un ctor par defaut & un operateur de recopie, il devrait pouvoir construire mon T).
 
Y'a ptetre un autre probleme en fait : c'est qu'à l'instantiation
de la methode template, le seul discriminant qui reste si on passe par defaut, c'est la valeur de retour...


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

  [C++] Templates

 

Sujets relatifs
[C++]: Problèmes de templates avec la STL[C++] question sur les templates
[PHP] Templates[C++ / Templates / Visual Studio] fonction po accessible
C quoi les templates ?Templates ... mais qu'est ce que c'est donc que ça ?
[C++] on peut faire ça avec les templates ????????[C++] Templates et friends ??? HELP!!
visual c++ et templates. pb de link... 
Plus de sujets relatifs à : [C++] Templates


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