Erreur avec les templates

Signaler
Messages postés
105
Date d'inscription
samedi 25 janvier 2003
Statut
Membre
Dernière intervention
13 décembre 2008
-
Messages postés
105
Date d'inscription
samedi 25 janvier 2003
Statut
Membre
Dernière intervention
13 décembre 2008
-
Bonjour, je débute en c++ et j'ai une erreur avec les templates :

J'ai une classe Fouille :
class Fouille {
public:
  ...
  template <typename TYPE> TYPE get(string);
},

Ma fonction :
template <typename TYPE> TYPE Fouille::get(string n) {
  ..
}

Et mon appel de fonction :
fouille->get("nom");

Ca me génere l'erreur suivante :
erreur: no matching function for call to ‘Fouille::get(const char [4])’

Quelqu'un a une idée ??

7 réponses

Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
18
Bonjour.
Il y a une différence entre un objet du type string et un char [].
Messages postés
105
Date d'inscription
samedi 25 janvier 2003
Statut
Membre
Dernière intervention
13 décembre 2008

ok merci ! mais comment je fais alors pour l'adapter ??
Messages postés
105
Date d'inscription
samedi 25 janvier 2003
Statut
Membre
Dernière intervention
13 décembre 2008

De toute façon si je fais un :
string nom = "nom";
et que j'appelle la fonction avec fouillet->get(nom); ça ne marche quand meme pas
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
18
Quand tu fais ton remplacement tu as toujours la même erreur ?
Messages postés
105
Date d'inscription
samedi 25 janvier 2003
Statut
Membre
Dernière intervention
13 décembre 2008

j'ai ça :
erreur: no matching function for call to ‘Fouille::get(std::string&)'
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
18
Il faut peut etre mettre
class Fouille {
public:
  ...
  template <typename TYPE> TYPE get(std::string);
},

Ma fonction :
template <typename TYPE> TYPE Fouille::get(std::string n) {
Messages postés
105
Date d'inscription
samedi 25 janvier 2003
Statut
Membre
Dernière intervention
13 décembre 2008

Non je déja met using namespace std;