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 :

Class template hérité


Sujet :

Langage C++

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Par défaut Class template hérité
    Voila j'ai une classe Objet qui à une classe fille Personnage qui a une classe fille Joueur qui a une classe fille Humain.

    Mon but est de faire une classe fille de Humain mais en template.

    Cette classe représente la classe (guerrier, archer, chevalier, etc.) de l'humain.

    Alors est-ce possible ?

    Car moi ça me met un message d'erreur.

    Voici le code :

    Guerrier.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Humain;
     
    template <class T>
    class Guerrier : public T  
    {
    public:
    	char* GetClasse(void);
    	Guerrier(char* Nom);
    	virtual ~Guerrier();
     
    };
    Guerrier.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #include "Guerrier.h"
     
    #include "InclusionRace.h"
     
    //////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////
     
    template <class T>
    Guerrier<T>::Guerrier(char* Nom) : T(Nom)
    {
     
    }
     
    template <class T>
    Guerrier<T>::~Guerrier()
    {
     
    }
     
    template <class T>
    char* Guerrier<T>::GetClasse()
    {
    	return "Archer\0";
    }
    Le message d'erreur est le suivant :

    Eleckase.obj : error LNK2001: unresolved external symbol "public: __thiscall Guerrier<class Humain>::Guerrier<class Humain>(char *)" (??0?$Guerrier@VHumain@@@@QAE@PAD@Z)
    Debug/Eleckase.exe : fatal error LNK1120: 1 unresolved externals


    InclusionRace.h est un en-tête qui inclut toutes les races.
    Et le constructeur de humain est :


    Je veux utiliser un template car il y a 13 races et 19 classes et que je préfèrerais ne pas à avoir à les croiser toutes...

  2. #2
    Invité de passage
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 1
    Par défaut
    On dirait qu'il trouve pas le contructeur de la classe Humain, il faudrait donc lui dire de regarder dans "InclusionRace.h" AVANT "Guerrier.h", et donc switcher tes 2 includes.

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Par défaut
    Ca marche merci, t'es un chef. Comme un con j'étais juste allé voir dans la faq à la classe template et je n'avais pas regardé après.

    Je te remerci encore une fois.

  5. #5
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 287
    Par défaut Re: Class template hérité
    Citation Envoyé par Azharis
    Je veux utiliser un template car il y a 13 races et 19 classes et que je préfèrerais ne pas à avoir à les croiser toutes...
    Ce n'est toujours pas la bonne solution vu que tu vas avoir une explosition du nombre de classes...
    Relis mes contributions précédentes, tout ça.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

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

Discussions similaires

  1. classe Template et méthodes "générales"
    Par rulianf dans le forum Langage
    Réponses: 1
    Dernier message: 26/10/2005, 13h42
  2. Problèmes de fonctions membres de classe templates, gcc3.3.6
    Par yves.dessertine dans le forum Autres éditeurs
    Réponses: 12
    Dernier message: 17/10/2005, 21h36
  3. Trouver le Type d'une classe template dynamiquement ?
    Par Serge Iovleff dans le forum Langage
    Réponses: 3
    Dernier message: 23/09/2005, 16h48
  4. [DLL/classe template] problème de link
    Par Bob.Killer dans le forum C++
    Réponses: 7
    Dernier message: 31/08/2005, 18h56
  5. Réponses: 6
    Dernier message: 06/10/2004, 12h59

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