Se connecter avec
S'enregistrer | Connectez-vous

mot clé [in-charge] ?

Dernière réponse : dans Programmation

Bonjour
j'ai une erreur du type undefined reference to Point::p oint[in-charge](int)
en compilant sous g++/Unix alors que je fais bien le lien avec le fichier Point.o
en question dans mon Makefile.

Ma 1er question c'est Savez vous ce que veux dire le mot clé [in-charge] ?
Et savez vous quelles genres d'erreurs peuvent entrainer un undefined reference ?

Autres pages sur : mot cle charge

Lassé par la pub ? Créez un compte

En fait j'ai bien un constructeur et un fichier .h, pour préciser le problème je vous attache les bouts de code copncernés:

1) La classe Point (fichier.cpp)
  1. #include "Point.h"
  2.  
  3. ////////////////////////////////////////////////////////////////////////////////
  4. //Constructeur
  5. Point::Point(float Tx,float Ty)
  6. {
  7. //cree un point avec ses coordonnes
  8. x=Tx;
  9. y=Ty;
  10. }
  11.  
  12. ////////////////////////////////////////////////////////////////////////////////
  13. //Constructeur
  14. Point::Point(float Tx,float Ty,float Ttheta)
  15. {
  16. //cree un point avec ses coordonnes
  17. x=Tx;
  18. y=Ty;
  19. theta=Ttheta;
  20. }
  21.  
  22. ////////////////////////////////////////////////////////////////////////////////
  23. //Destructeur
  24. Point::~Point(void)
  25. {
  26. }


2) La creation d'une librairie libPER_Utils.a qui compile et stocke Point.o
  1. ar qvs ../../../../Lib/libPER_Utils.a Point.o Segment.o Utilitaires.o matrix_inv.o util.o
  2. r - Point.o
  3. r - Segment.o
  4. r - Utilitaires.o
  5. r - matrix_inv.o
  6. r - util.o


3) La compilation:
  1. g++ carte.C -o ../../../Bin/carte -DVERBEUX -Wall -DVISU \
  2. ../../../Lib/libPER_Utils.a ../../../Lib/ACT_planif_trajectoire.o
  3. etc....


4) le message d'erreur !
  1. ../../../Lib/ACT_planif_trajectoire.o(.text+0x1a93):
  2. In function `agt_planif_trajectoire::Create_Potentiel()':
  3. : undefined reference to `Point::Point[in-charge](float, float, float)'


5) La fonction qui ne trouve pas le point:D ans « void agt_planif_trajectoire::Create_Potentiel(void) »:

  1. Point *PointBut=new Point(CelluleXArrivee- CelluleXMin,CelluleYArrivee- CelluleYMin,0)


Voila le problème est ainsi mieux posé... ça fait un bout de temps que je me creuse mais tout me parrait correct !

Lorsque tu définit tes constructeurs, la fonction doir avoir le même nom que ta classe :

Tu les définit comme cela :
  1. //Constructeur
  2. Point::point(float Tx,float Ty)
  3. { ... }
  4.  
  5. //Constructeur
  6. Point::point(float Tx,float Ty,float Ttheta)
  7. { ... }


Alors que tu devrais les définir comme suit :
  1. //Constructeur
  2. Point::Point(float Tx,float Ty)
  3. { ... }
  4.  
  5. //Constructeur
  6. Point::Point(float Tx,float Ty,float Ttheta)
  7. { ... }


En effet, le C++ est sensible à la casse alors point et Point c'est pas pareil.

EDIT : Je crois qu'il y a un bug dans les balises [ cpp ] et [ /cpp] du forum, elles mettent des lettres en minuscule dans le code.

oui il doit y avoir un bug dans les balises cpp car dans
ma classe le constructeur /destructeur est bien en majuscule.

Ce qui est étrange c'est que ça ne peut pas etre une erreur de syntaxe
car j'ai déjà utilisé ma classe Point dans une autre application et elle
liait correctement !
Lassé par la pub ? Créez un compte