C++/ Undefined reference
Résolu/Fermé
Wanted59
Messages postés
44
Date d'inscription
vendredi 6 mars 2009
Statut
Membre
Dernière intervention
15 octobre 2009
-
6 juin 2009 à 21:35
INDUSTRINFO - 7 juin 2009 à 17:20
INDUSTRINFO - 7 juin 2009 à 17:20
A voir également:
- C++/ Undefined reference
- Reference pto - Accueil - Box & Connexion Internet
- Impossible d'accéder à l'élément référencé par ce raccourci ✓ - Forum Windows
- Le compte reference est actuellement verrouillé ✓ - Forum Windows
- Undefined mail - Forum Gmail
- La référence n'est pas valide excel - Forum Excel
23 réponses
easycomp
Messages postés
86
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
4 juillet 2009
30
7 juin 2009 à 11:44
7 juin 2009 à 11:44
Ah et aussi,
Pense à déclarer ton destructeur étant donné que tu manipules des pointeurs...
Pense à déclarer ton destructeur étant donné que tu manipules des pointeurs...
class personnage {
} ;
As-tu bien mis el point virgule apres l'accolade fermante de ta classe ?
Le fichier CPP existe-t-il avec toutes les méthodes déclarés dans ton .h ?
Fait tu un appel ou une déclaration dans ton code source de cette classe ?
As tu pensé à l'include personnage.h , là où tu instancies ta classe ?
} ;
As-tu bien mis el point virgule apres l'accolade fermante de ta classe ?
Le fichier CPP existe-t-il avec toutes les méthodes déclarés dans ton .h ?
Fait tu un appel ou une déclaration dans ton code source de cette classe ?
As tu pensé à l'include personnage.h , là où tu instancies ta classe ?
Wanted59
Messages postés
44
Date d'inscription
vendredi 6 mars 2009
Statut
Membre
Dernière intervention
15 octobre 2009
7
7 juin 2009 à 12:12
7 juin 2009 à 12:12
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.
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.
easycomp
Messages postés
86
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
4 juillet 2009
30
7 juin 2009 à 12:15
7 juin 2009 à 12:15
Re,
Peux-tu copier le code de kuruFries.h ?
Peux-tu copier le code de kuruFries.h ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
easycomp
Messages postés
86
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
4 juillet 2009
30
7 juin 2009 à 13:20
7 juin 2009 à 13:20
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"
mype
Messages postés
2435
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
16 août 2010
436
7 juin 2009 à 01:34
7 juin 2009 à 01:34
poste nous ton code en entier ça sera plus simple pour voir le probleme
Wanted59
Messages postés
44
Date d'inscription
vendredi 6 mars 2009
Statut
Membre
Dernière intervention
15 octobre 2009
7
7 juin 2009 à 10:09
7 juin 2009 à 10:09
Alors voilà un partie du code :
Dans Personnage.h :
#ifndef PERSONNAGE_H_INCLUDED
#define PERSONNAGE_H_INCLUDED
class Personnage
{
public :
Personnage();
Personnage(SDL_Surface *personnage, SDL_Rect positionPersonnage);
void afficher(SDL_Surface *surface);
void lancer();
private :
SDL_Surface *m_personnage;
SDL_Rect m_positionPersonnage;
};
#endif // PERSONNAGE_H_INCLUDED
Dans Personnage.cpp :
#include<iostream>
#include<SDL/SDL.h>
#include<SDL_image.h>
#include<Personnage.h>
Personnage::Personnage()
{
*m_personnage = NULL;
m_positionPersonnage.x = 0;
m_positionPersonnage.y = 0;
}
Personnage::Personnage(SDL_Surface *personnage, SDL_Rect positionPersonnage)
{
*m_personnage = *personnage;
m_positionPersonnage.x = positionPersonnage.x;
m_positionPersonnage.y = positionPersonnage.y;
}
Personnage::afficher(SDL_Surface surface)
{
SDL_BlitSurface(m_personnage, NULL, surface, &m_positionPersonnage);
}
Et l'endroit où je déclare ma déclaration de class :
while(menu_extra_kuruFries)
{
SDL_WaitEvent(&event);
if(kuruFries_declarationVariables)
{
SDL_Surface *kuruFries_kurutchin = SDL_LoadBMP("Data\\Images\\KuruFries\\image_kurutchin.bmp");
SDL_Rect positionKuruFries_kurutchin;
kuruFries_imageDeDebut = SDL_LoadBMP("Data\\Images\\KuruFries\\image_debut.bmp");
Personnage Kurutchin; // ça bug ici
kuruFries_declarationVariables = false;
}
Et ça m'affiche :
||=== Projet 1, Debug ===|
main.cpp|411|undefined reference to `Personnage::Personnage()'|
main.cpp|442|undefined reference to `Personnage::Personnage()'|
main.cpp|443|undefined reference to `Personnage::afficher(SDL_Surface*)'|
||=== Build finished: 3 errors, 0 warnings ===|
Dans Personnage.h :
#ifndef PERSONNAGE_H_INCLUDED
#define PERSONNAGE_H_INCLUDED
class Personnage
{
public :
Personnage();
Personnage(SDL_Surface *personnage, SDL_Rect positionPersonnage);
void afficher(SDL_Surface *surface);
void lancer();
private :
SDL_Surface *m_personnage;
SDL_Rect m_positionPersonnage;
};
#endif // PERSONNAGE_H_INCLUDED
Dans Personnage.cpp :
#include<iostream>
#include<SDL/SDL.h>
#include<SDL_image.h>
#include<Personnage.h>
Personnage::Personnage()
{
*m_personnage = NULL;
m_positionPersonnage.x = 0;
m_positionPersonnage.y = 0;
}
Personnage::Personnage(SDL_Surface *personnage, SDL_Rect positionPersonnage)
{
*m_personnage = *personnage;
m_positionPersonnage.x = positionPersonnage.x;
m_positionPersonnage.y = positionPersonnage.y;
}
Personnage::afficher(SDL_Surface surface)
{
SDL_BlitSurface(m_personnage, NULL, surface, &m_positionPersonnage);
}
Et l'endroit où je déclare ma déclaration de class :
while(menu_extra_kuruFries)
{
SDL_WaitEvent(&event);
if(kuruFries_declarationVariables)
{
SDL_Surface *kuruFries_kurutchin = SDL_LoadBMP("Data\\Images\\KuruFries\\image_kurutchin.bmp");
SDL_Rect positionKuruFries_kurutchin;
kuruFries_imageDeDebut = SDL_LoadBMP("Data\\Images\\KuruFries\\image_debut.bmp");
Personnage Kurutchin; // ça bug ici
kuruFries_declarationVariables = false;
}
Et ça m'affiche :
||=== Projet 1, Debug ===|
main.cpp|411|undefined reference to `Personnage::Personnage()'|
main.cpp|442|undefined reference to `Personnage::Personnage()'|
main.cpp|443|undefined reference to `Personnage::afficher(SDL_Surface*)'|
||=== Build finished: 3 errors, 0 warnings ===|
Wanted59
Messages postés
44
Date d'inscription
vendredi 6 mars 2009
Statut
Membre
Dernière intervention
15 octobre 2009
7
7 juin 2009 à 10:35
7 juin 2009 à 10:35
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.
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.
Wanted59
Messages postés
44
Date d'inscription
vendredi 6 mars 2009
Statut
Membre
Dernière intervention
15 octobre 2009
7
7 juin 2009 à 11:38
7 juin 2009 à 11:38
ça ne marche toujours pô...
easycomp
Messages postés
86
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
4 juillet 2009
30
7 juin 2009 à 11:43
7 juin 2009 à 11:43
Salut,
Essaie de déclarer ton personnage avec un new pour voir ( Personnage Kurutchin = new Personnage(); )
Essaie de déclarer ton personnage avec un new pour voir ( Personnage Kurutchin = new Personnage(); )
Wanted59
Messages postés
44
Date d'inscription
vendredi 6 mars 2009
Statut
Membre
Dernière intervention
15 octobre 2009
7
7 juin 2009 à 12:29
7 juin 2009 à 12:29
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
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
easycomp
Messages postés
86
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
4 juillet 2009
30
7 juin 2009 à 12:39
7 juin 2009 à 12:39
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.
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.
Wanted59
Messages postés
44
Date d'inscription
vendredi 6 mars 2009
Statut
Membre
Dernière intervention
15 octobre 2009
7
7 juin 2009 à 12:53
7 juin 2009 à 12:53
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 :)
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 :)
easycomp
Messages postés
86
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
4 juillet 2009
30
7 juin 2009 à 12:56
7 juin 2009 à 12:56
Kuruchin est un pointeur d'objet. Pointeur = déréférencement.
Essaye avec Kuruchin->afficher(ecran);
Essaye avec Kuruchin->afficher(ecran);
Wanted59
Messages postés
44
Date d'inscription
vendredi 6 mars 2009
Statut
Membre
Dernière intervention
15 octobre 2009
7
7 juin 2009 à 13:08
7 juin 2009 à 13:08
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.
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.
easycomp
Messages postés
86
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
4 juillet 2009
30
7 juin 2009 à 13:14
7 juin 2009 à 13:14
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?
Quel IDE utilises-tu?
Si tu compiles a la main, tes options de compilation?
Wanted59
Messages postés
44
Date d'inscription
vendredi 6 mars 2009
Statut
Membre
Dernière intervention
15 octobre 2009
7
7 juin 2009 à 13:17
7 juin 2009 à 13:17
J'utilise Code:block et mes option de compilation sont par defaut.
Wanted59
Messages postés
44
Date d'inscription
vendredi 6 mars 2009
Statut
Membre
Dernière intervention
15 octobre 2009
7
7 juin 2009 à 13:22
7 juin 2009 à 13:22
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.
easycomp
Messages postés
86
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
4 juillet 2009
30
7 juin 2009 à 13:24
7 juin 2009 à 13:24
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.
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.
easycomp
Messages postés
86
Date d'inscription
samedi 6 juin 2009
Statut
Membre
Dernière intervention
4 juillet 2009
30
7 juin 2009 à 13:26
7 juin 2009 à 13:26
(Penses à passer en status "résolu")