Partage
  • Partager sur Facebook
  • Partager sur Twitter

Surcharge, valeur par defaut et constructeur

Sujet résolu
    29 mai 2007 à 4:53:08

    Bonjour,

    j'ai un problème avec les constructeurs,surcharge et valeur par défaut( tous en même temps!)Je ne suis pas capable de mettre de valeur par default dans mes constructeurs :

    -Cloud doit prendre les valeurs de 100 vie et 100 mana puisqu'il n'y a aucun argument dans le constructeur (ici c'est OK)
    (PROBLÈME)-Sephiroth devrait prendre les valeurs 150 vies et 50 mana, mais le compilateur refuse de compiler.

    J'ai essayé plusieurs choses en modifiant le prototype dans le .h, mais rien ne fonctionne :(

    Quelqu'un aurait une solution à mon problème?

    Merci d'avance.

    Main:
    Personnage Cloud, Sephiroth(150);

    Note : tout compile bien si je mets une valeur pour la mana ( 2 arguments dans Sephiroth)

    Fonction .cpp

            Personnage::Personnage()
            {
                    m_vie=100;
                    m_mana=100;
                    m_arme=0;

            }
            Personnage::Personnage(int vie=50, int mana=50)
            {
                    m_vie=vie;
                    m_mana=mana;
                    m_arme=0;
            }

    Prototype .h

    class Personnage
    {
        public:
            Personnage();
            Personnage(int vie,int mana);
            ...


    };

    error C2664: '__thiscall Personnage::Personnage(const class Personnage &;)' : cannot convert parameter 1 from 'const int' to 'const class Personnage &'
    Reason: cannot convert from 'const int' to 'const class Personnage'
    No constructor could take the source type, or constructor overload resolution was ambiguous
    • Partager sur Facebook
    • Partager sur Twitter
      29 mai 2007 à 10:23:49

      Tu as déclaré ici deux constructeurs par défaut. Choisis de n'en garder qu'un.

      Un constructeur est dit par défaut quand il peut être appelé avec 0 paramètre réel depuis le code client. Ce qui n'empêche pas qu'il puisse avoir 10 paramètres formels, tous déclarés avec une valeur par défaut.

      (Param. réel =~ param d'appel ; param formel =~ param de la signature/utilisé dans le corps)
      • Partager sur Facebook
      • Partager sur Twitter
      C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
        29 mai 2007 à 13:44:09

        Edit : j'ai rien dit... c'était des bêtises du à une erreur de lecture...
        • Partager sur Facebook
        • Partager sur Twitter
          30 mai 2007 à 1:37:45

          Oups. Je n'avais pas fait attention au code. Il présente exactement la même erreur que le dernier tuto de mathéo.

          Si valeurs par défaut tu veux, dans la déclaration de la fonction tu les déclareras. Pas dans sa définition. Et un seul constructeur par défaut tu auras.
          • Partager sur Facebook
          • Partager sur Twitter
          C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.

          Surcharge, valeur par defaut et constructeur

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown