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

C++ Discussion :

probleme avec virtual


Sujet :

C++

  1. #1
    Membre chevronné Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Par défaut probleme avec virtual
    Salut,

    Je developpe un petit programme sous DevC++ avec le compilateur mingw. Tout allait bien quand je suis tombé sur un probleme, le mot clef virtual ne semble pas fonctionner dans mon programme.

    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
    26
    27
    28
    29
    30
    31
    32
    33
     
     
    class Talent
    {
    public:
        Talent(std::string oTalent,
    	PRIORITE ePriorite,
    	CARACT eCaract = AUCUNE);
     
        virtual ~Talent(){};
     
        virtual bool IsAugmentable(int nRang)
    	{
         Debug("IsAugmentable dans Talent");
         if(!mpoSpecialite)
    	  return true;
         else
    	  return ((mfNiveau+0.5f*nRang) <= mpoSpecialite->GetNiveau());
    	};
    };
     
    class Langue : public Talent
    {
    public:
    	Langue(std::string oTalent);
    	virtual ~Langue(){};
     
        virtual bool IsAugmentable(int nRang)
    	{
    	 Debug("IsAugmentable dans Langue");
    	 return (mfNiveau+0.5f*nRang) <= 0.5f;
    	};
    };
    Lorsque j'appelle ma fonction sur un pointeur de type Talent qui est en fait une Langue je m'attend a utiliser la fonction de Langue, mais ce n'est pas le cas. J'espere que ce n'est pas une erreur 18 cm (trop pres de l'ecran trop longtemps = on fait n'importe quoi)

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    pourrais-tu indiquer le code qui manipule ton pointeur de Talent ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 293
    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 293
    Par défaut
    Tu appelles ta fonction depuis un constructeur ou un destructeur ?
    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...

  4. #4
    Membre chevronné Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Par défaut
    Citation Envoyé par Swoög
    pourrais-tu indiquer le code qui manipule ton pointeur de Talent ?
    oui bien sure voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void Personnage::AugmenterTalent(std::string oTalent, int rang)
    {
        Talent* poTalent = moTalents[oTalent] ;
        if(!poTalent)
    	return;
     
        if(!poTalent->IsAugmentable(rang))
    	return;
     
        // ... 
    }
    et moTalent est un membre de la class Personnage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::map<std::string,Talent*> moTalents;
    et voici le genre d'element que j'ai mis dans la map :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    moListeDesTalents["ExotiqueFoi"] = new Talent("ExotiqueFoi",EXOTIQUE,FOI);
    moListeDesTalents["LangueAnglais"] = new Langue("LangueAnglais");

  5. #5
    Membre chevronné Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Par défaut
    Citation Envoyé par Luc Hermitte
    Tu appelles ta fonction depuis un constructeur ou un destructeur ?
    ni l'un ni l'autre je l'appelle depuis une fonction d'une classe.

  6. #6
    Membre chevronné Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Par défaut
    Salut,

    en ecrivant mes messages precedent j'ai eu la revelation de la solution , c'etait effectivement un code 18 de ma part.

    Je faisais une copie de ma liste des talents a un endroit et en faisant la copy je ne differenciais pas mes talents langues des autres donc je me retrouvais avec seulement des Talents dans la copie au lieu d'un melange de Talent et Langue.

    donc ce n'etait pas un probleme de virtual, ce dont on se doutait, mais sur le coup ca perturbe lol.

    bref comme quoi parfois decoller un peu de l'ecran et revenir ca aide a voir plus clair.

    Merci
    XXiemeciel

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

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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