IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

Template & Spécialisation


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut Template & Spécialisation
    Bonjour à tous,

    j'ai un petit soucis concernant la spécialisation d'une méthode :

    error LNK2019: unresolved external symbol "public: static class String __cdecl String::Concat<int>(class IEnumerable<int> const &)" (??$Concat@H@String@@SA?AV0@ABV?$IEnumerable@H@@@Z) referenced in function "void __cdecl Test_System___String(void)" (?Test_System___String@@YAXXZ)
    .h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    template<typename T>
    static String		Concat(const IEnumerable<T> &Values);
    .cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    template<typename T>
    String String::Concat(const IEnumerable<T> &Values)
    {
            return ("Default");
    }
     
    template<>
    String String::Concat<Object>(const IEnumerable<Object> &Values)
    {
    	return ("Spec");
    }
    Code de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String Test004 = String::Concat(List1); // List1 conctient des int (cette ligne pause problème
    String Test005 = String::Concat<Object>(List2); // fonctionne correctement ac la spécialisation

    Si quelqu'un sait pourquoi avec les int, la méthode d'origine n'est pas appelée...

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    le code des fonctions templates doit vivre dans un .hpp et non un .cpp

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    Citation Envoyé par Joel F Voir le message
    le code des fonctions templates doit vivre dans un .hpp et non un .cpp
    .... Ahah je me sens roulées.... J'avais complètement oublié, syndrome des langage de plus haut niveau.

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pointeurs et références + template et spécialisation
    Par Lintel-oo dans le forum Langage
    Réponses: 23
    Dernier message: 29/06/2012, 14h40
  2. Templates et spécialisation.
    Par NoIdea dans le forum C++
    Réponses: 12
    Dernier message: 20/12/2010, 09h08
  3. stockage de template sans spécialisation préalable
    Par antx31 dans le forum Langage
    Réponses: 5
    Dernier message: 22/11/2010, 08h41
  4. [Template] erreur spécialisation explicite
    Par Elstak dans le forum C++
    Réponses: 9
    Dernier message: 16/10/2008, 11h45
  5. Réponses: 4
    Dernier message: 15/10/2008, 09h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo