Partage
  • Partager sur Facebook
  • Partager sur Twitter

[linker error] une erreur enervante

Sujet résolu
    11 juin 2007 à 10:58:46

    :p salut a tous !!

    j'ai une ereur de linkeur :
    [Linker error] undefined reference to `personnage::pseudo(std::string)'
    [Linker error] undefined reference to `personnage::pseudo(std::string)'

    je vous montre le code où se trouve personnage::pseudo

    LE .H
    class personnage
    {
    std::string m_nomHeros;
    public:
    void pseudo(std::string pseudo ="");

    }
    LE .CPP
    #include "mmorpg.h"//le point .h du dessus
    void personnage::pseudo(std::string pseudo)
    {m_nomHeros = pseudo;}


    au debut le code marchait trè bien ,puis il m'a afficher cette insulte en 2 exemplaire :-°
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      11 juin 2007 à 11:28:56

      ta oublié d'ajouter le personnage.cpp a ton projet.
      • Partager sur Facebook
      • Partager sur Twitter
        11 juin 2007 à 13:07:43

        non ^^ il y est !
        mais ca n'aurait pas fait un [Linker error]
        • Partager sur Facebook
        • Partager sur Twitter
          11 juin 2007 à 16:40:22

          Citation


          mais ca n'aurait pas fait un [Linker error]


          Ben, si.

          Apparament il trouve pas le code de personnage::pseudo au moment de tout linker dans un exécutable. Donc ça semble logique.

          Par contre, la valeur par défaut du paramètre (= ""), je pense que tu devrais la mettre dans la déclaration de la fonction du .cpp et l'enlever du prototype de .h. Si je me souviens bien, les paramètres par défaut, c'est que dans le .cpp. Peut être qu'il n'y a pas de rapport, mais on ne sait jamais.
          • Partager sur Facebook
          • Partager sur Twitter
          J'ai déménagé sur Zeste de savoir — Ex-manager des modérateurs.
            11 juin 2007 à 19:41:14

            Citation : GuilOooo

            Par contre, la valeur par défaut du paramètre (= ""), je pense que tu devrais la mettre dans la déclaration de la fonction du .cpp et l'enlever du prototype de .h. Si je me souviens bien, les paramètres par défaut, c'est que dans le .cpp. Peut être qu'il n'y a pas de rapport, mais on ne sait jamais.



            Faux! C'est dans le .h


            Pour une erreur de lien, il faut comprendre que le compilateur fonctionne en deux étapes

            1) Compilation: il va compiler chacun des fichiers SÉPARÉMENT en .obj

            2) Édition des liens : C'est à ce moment qu'il va lier les .cpp ensemble. C'est à ce moment qu'il peut ne pas retrouver la définition d'une fonction dans le tas.

            si tu as plusieurs classes dans le même fichier sépare-les. Un couple .h/cpp par classe.
            • Partager sur Facebook
            • Partager sur Twitter
              12 juin 2007 à 14:20:39

              #include signifit remplacer (donc le.h est facultatif)

              mais c'est là que je ne comprend pas... mon fichier remarche (^^bien sur c'est bien) mais je n'ai rien touché...
              o_O )
              mon compilateur se fiche de moi (je commence à avoir des doute :lol: )
              tant que ca marche... :D (mais j'ai toujours rien compris)
              • Partager sur Facebook
              • Partager sur Twitter

              [linker error] une erreur enervante

              × 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