[C++] problème de constructeur ?

problème de constructeur ? [C++] - C++ - Programmation

Marsh Posté le 28-03-2005 à 10:53:33    

Bonjour à tous, j'ai ceci qui ne compile pas, et j'avoue que je ne comprends pas trop pourquoi  :??:  
 
Action.h

Code :
  1. #ifndef _ACTION_H_
  2. #define _ACTION_H_
  3. class Action {
  4.      public:
  5.          Action();
  6. };
  7. #endif


 
Action.cc

Code :
  1. #include "Action.h"
  2. #include <iostream>
  3. using namespace std;
  4. Action::Action() {
  5. }


 
Launcher.cc

Code :
  1. #include "Robot.h"
  2. #include <iostream>
  3. using namespace std;
  4. int main(void) {
  5.     Action action;
  6.     return 0;
  7. }


 
 
 
Résultat de la compilation :

Code :
  1. (10:52:50)-(xav@garfield)-(/home/xav/w/code) make
  2. g++ -Wall -o Launcher.o -c Launcher.cc
  3. g++ -Wall -o Launcher Launcher.o
  4. Launcher.o(.text+0x17): In function `main':
  5. : undefined reference to `Action::Action[in-charge]()'
  6. collect2: ld a retourné 1 code d'état d'exécution
  7. make: *** [Launcher] Erreur 1


 
Nb : Launcher include Robot.h qui include plusieurs .h dont Action.h


Message édité par Xavier_OM le 28-03-2005 à 10:54:56

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 28-03-2005 à 10:53:33   

Reply

Marsh Posté le 28-03-2005 à 11:16:29    

T'as oublié de nous montrer ton makefile (c'est dedans qu'il y a l'erreur, vu que "Launcher" dépend de Launcher.o et Action.o).

Reply

Marsh Posté le 28-03-2005 à 11:51:35    

Mon makefile :

Code :
  1. # Config :
  2. #
  3. # Le compilateur
  4. CXX=g++
  5. CXXFLAGS=-Wall
  6. #
  7. # Les options de l'éditeur de lien
  8. LDFLAGS=-Wall
  9. #
  10. #
  11. #
  12. #
  13. # Build actions :
  14. #
  15. # Déjà on compile la _première_ dépendance
  16. # C'est à dire que si on a :
  17. #     toto.o: toto.cc toto.h
  18. # alors ca lancera la compilation de :
  19. #     toto.cc
  20. #
  21. COMPILE_CXX=$(CXX) $(CXXFLAGS) -o $@ -c $<
  22. #
  23. # Ensuite on fait l'édition de liens de toutes les dépendances
  24. LINK_CXX=$(CXX) $(LDFLAGS) -o $@ $^
  25. #
  26. #
  27. #
  28. #
  29. # Dépendances par défaut :
  30. #
  31. %.o: %.cc %.h
  32. $(COMPILE_CXX)
  33. # Cette règle ne se lancera pas s'il y a un fichier .cc et pas un .h
  34. #
  35. %.o: %.cc
  36. $(COMPILE_CXX)
  37. # Donc cette règle sera utilisée en l'absence de .h
  38. #
  39. #
  40. #
  41. #
  42. # Les cibles
  43. #
  44. default: all
  45. #
  46. all: Launcher
  47. #
  48. clean:
  49. $(RM) *.o
  50. $(RM) Launcher
  51. #
  52. #
  53. Launcher: Launcher.o
  54. $(LINK_CXX)
  55. #
  56. Launcher.o: Launcher.cc \
  57.             Robot.o EtatRobot.o \
  58.             ArretAVide.o ArretEnCharge.o MouvementAVide.o MouvementEnCharge.o \
  59.             Action.o
  60. Robot.o: Robot.cc Robot.h
  61. EtatRobot.o: EtatRobot.h
  62. ArretAVide.o: ArretAVide.cc ArretAVide.h
  63. ArretEnCharge.o: ArretEnCharge.cc ArretEnCharge.h
  64. MouvementAVide.o: MouvementAVide.cc MouvementAVide.h
  65. MouvementEnCharge.o: MouvementEnCharge.cc MouvementEnCharge.h
  66. Action.o : Action.cc


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 28-03-2005 à 11:53:16    

Donc, c'est bien ce que je disais. La ligne 53 est fausse.

Reply

Marsh Posté le 28-03-2005 à 11:57:09    

En fait ce serait Launcher (et pas Launcher.o) qui dépendrait de tous les .o dont je vais utiliser les classes dans Launcher.cc ?
Je débute en c++ donc l'édition de liens c'est pas trop mon fort  :ange:  
 
Merci en tous cas pour ta réponse rapide  :jap:


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 28-03-2005 à 12:14:42    

Euh, je vois pas comment être plus clair que ça:  :D  
 

Lam's a écrit :

"Launcher" dépend de Launcher.o et Action.o.


 

Lam's a écrit :

La ligne 53 est fausse.


Message édité par Lam's le 28-03-2005 à 12:15:09
Reply

Marsh Posté le 28-03-2005 à 12:17:02    

No pb, encore merci  :jap:


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed