C++/ Undefined reference

Résolu
Bonjour à tous,
j'ai un problème pendant la compilation de mon code, le voilà :
undefined reference to `Personnage::Personnage()'
J'ai cherché pendant des heures et j'exagère pas, j'ai du tourner en rond tous ce temps en tout cas c'était totalement vain... Je ne comprend pas du tout le problème et je ne trouve pas de solution sur le net, merci de bien vouloir m'éclairer sur ce sujet.
Configuration: Windows XP
Safari 525.19

23 réponses

  1. Ah et aussi,
    Pense à déclarer ton destructeur étant donné que tu manipules des pointeurs...
    3
    1. Bonjour , je viens d'installer Visual C++ Express et je retrouve pas ou enregistrer '' la clé d' enregistrement ''. Aider moi svp, Vous êtes un espoir pour moi. Merci
      0
      1. Bah de toutes façons en cas de problème tu sais où aller ;)
        Merde a toi :)
        0
        1. Il y avait un gros problème principale en fait, j'avais fait :

          #include <Personnage.h>

          au lieu de :

          #include "Personnage.h"

          (dans Personnage.cpp)

          Donc enfaite le compilateur se disait qu'il connaissait les prototype mais pas les fonctions, d'où le bug.
          En tout cas merci et je me dit merde pour réussir a régler tous les autres petit problème et pour réussir ma prog orienté objet avec la SDL (ce que j'ai jamais fais) ^^.
          Merci beaucoup.
          0
          1. (Penses à passer en status "résolu")
            0
            1. Voila :)
              Maintenant tu sais que ces erreurs ne viennent plus de là ^^
              J'ai eu un flash dans ma tête et je me suis dit "lui il coche pas les cases quand on lui demande" et j'ai eu raison :p
              Si tu as encore des soucis, n'hésite pas.
              0
              1. A oui ben vu maintenant le débbugeur m'indique plein de nouvelle erreurs que je vais essayer de résoudre une par une et si je bloque je reposterai, merci beaucoup.
                0
                1. OK dans ce cas vérifie dans "Project -> Properties -> Build Target" que tous tes fichiers sources soient cochés en Debug et en Release dans le textbox "Build Target File"
                  1
                  1. J'utilise Code:block et mes option de compilation sont par defaut.
                    0
                    1. Heu petite question un peu bête mais j'aurais dû y penser au départ:
                      Quel IDE utilises-tu?
                      Si tu compiles a la main, tes options de compilation?
                      0
                      1. snif j'en ai marre...
                        Maintenant les undefined reference reviennent, je galère vraiment en C++...
                        J'ai tout déclaré comme tu m'a dit

                        Personnage *Kurutchin;
                        ligne 412 : Kurutchin = new Personnage();

                        et quand j'utilise :

                        ligne 442 : Kurutchin->afficher(ecran);

                        ça me met :

                        main.cpp|412|undefined reference to `Personnage::Personnage()'|
                        main.cpp|442|undefined reference to `Personnage::afficher(SDL_Surface*)'|
                        ||=== Build finished: 2 errors, 2 warnings ===|

                        'fin bref là franchement je rame.
                        0
                        1. Kuruchin est un pointeur d'objet. Pointeur = déréférencement.
                          Essaye avec Kuruchin->afficher(ecran);
                          0
                          1. Alors maintenant j'arrive a initialiser Kurutchin mais quand j'utilise une fonction de la class ça me met :

                            main.cpp|442|error: request for member `afficher' in `Kurutchin', which is of non-class type `Personnage*'|

                            main.cpp :

                            ligne 442 : Kurutchin.afficher(ecran);

                            Merci beaucoup de te soucier de mon problème en tout cas :)
                            0
                            1. Ok, essaye comme ça:

                              Personnage *Kurutchin;
                              dans ton .h et
                              Kurutchin = new Personnage(); quand tu veux initialiser ton personnage

                              logiquement tu n'initialises pas de variable ou objet dans le .h mais bon.

                              Dis moi si c'est bon.
                              0
                              1. Voilà :

                                kuruFries.h :

                                #ifndef KURUFRIES_H_INCLUDED
                                #define KURUFRIES_H_INCLUDED
                                #include "Personnage.h"

                                SDL_Surface *kuruFries_imageDeDebut = NULL;

                                SDL_Rect positionKuruFries_imageDeDebut;

                                bool kuruFries_declarationVariables = true;
                                bool kuruFries_afficher_imageDeDebut = true;

                                Personnage Kurutchin = new Personnage();

                                #endif

                                Personnage.h:

                                #ifndef PERSONNAGE_H_INCLUDED
                                #define PERSONNAGE_H_INCLUDED

                                class Personnage
                                {
                                public :
                                Personnage();
                                Personnage(SDL_Surface *personnage, SDL_Rect positionPersonnage);
                                ~Personnage();
                                void afficher(SDL_Surface *surface);
                                void lancer();

                                private :

                                SDL_Surface *m_personnage;
                                SDL_Rect m_positionPersonnage;

                                };

                                #endif // PERSONNAGE_H_INCLUDED
                                0
                                1. Re,

                                  Peux-tu copier le code de kuruFries.h ?
                                  1
                                  1. Merci du conseil,
                                    J'ai essayé et maintenant j'ai une autre erreur :

                                    kuruFries.h|12|error: conversion from `Personnage*' to non-scalar type `Personnage' requested|

                                    Celle là je ne l'avais jamais vu avant.
                                    1
                                    1. Salut,
                                      Essaie de déclarer ton personnage avec un new pour voir ( Personnage Kurutchin = new Personnage(); )
                                      0
                                      1. ça ne marche toujours pô...
                                        0
                                        1. Lu et merci de bien vouloir m'aider,
                                          J'ai bien mis le ";" après l'accolade fermante de ma class par contre j'ai pas mis toutes les méthodes de mon .h dans le .cpp car je voulais juste tester si j'arrivé au moins a déclarer ma class Kurutchin et de l'afficher. Je vais essayer de tout mettre dans le .cpp. Et au niveau et l'inclusion de Personnage.h c'est ok pi de toute manière je croi que le débuggeur m'aurai dit qu'il n'existe pas de Class Personnage. 'Fin bref j'essai et je repost pour dire quoi.
                                          0
                                          • 1
                                          • 2