Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1444 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++][Résolu] Le compilateur semble ignorer une classe : pourquoi ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++][Résolu] Le compilateur semble ignorer une classe : pourquoi ?

n°1659998
Upsilon
Posté le 18-12-2007 à 15:23:08  profilanswer
 

Bonjour ! J'ai un problème, probablement une bêtise, mais dont je ne vois vraiment pas la solution...
 
J'ai une classe Mouvement définie comme ceci :
 

Code :
  1. #ifndef _Mouvement_
  2. #define _Mouvement_
  3. #include "Camera.h"
  4. #include "Vector3f.h"
  5. #include "Matrice.h"
  6. #include "Forme3D.h"
  7. #include "Mouvement.h"
  8. class Mouvement
  9. {
  10. public:
  11. Vector3f pos, vue;
  12. int i1, j1; //position actuelle de l'objet
  13. int i, j; //position où remettre l'objet;
  14. bool endroit;
  15. Mouvement(Vector3f laPos, Vector3f laVue, int leI1, int leJ1, int leI, int leJ, bool lEndroit);
  16. Mouvement();
  17. };
  18. #endif


 
Et une classe Camera :
 

Code :
  1. #ifndef _Camera_
  2. #define _Camera_
  3. #include "Camera.h"
  4. #include "Mouvement.h"
  5. #include "Vector3f.h"
  6. #include "Matrice.h"
  7. #include "Forme3D.h"
  8. #include <QStack>
  9. #include <iostream>
  10. class Camera
  11. {
  12. public:
  13. Vector3f pos, vue, haut;
  14. Mouvement essai;
  15. float vitesse, distance, radians, pi;
  16. int nombrealeatoiredefinissantlemonde2;
  17. bool endroit;
  18. Camera(Matrice *m,float posx,float posy,int nombrealeatoiredefinissantlemonde);
  19. float pas(int temps);
  20. bool termine;
  21. int matriceX, matriceY;
  22. QStack<Mouvement> mouvements;
  23. void zoom(int delta,Matrice *mat2,forme3D ** nosformes,uint tex1,uint tex2,uint tex3, uint tex4, uint tex5,uint tex7,uint posdepart);
  24. void deplacer(int temps);
  25. void glisser(int temps, Matrice *mat2);
  26. void regarder();
  27. void rotation(int temps);
  28. void raz();
  29. int suivant(int i, int i1);
  30. int regard();
  31. int cibleX();
  32. int cibleY();
  33. int provenance(int i, int i1, int j, int j1);
  34. void annuler(Matrice *mat2,forme3D ** nosformes, uint tex1, uint tex2,uint tex3, uint tex4, uint tex5,uint tex7,uint posdepart);
  35. };
  36. #endif


 
Malheureusement, le compilateur semble ignorer superbement la classe Mouvement, et me gratifie de ceci : [:kains]  
 

Code :
  1. c...\visual studio 2005\projects\jeu sokoban\Camera.h(22) : error C2065: 'Mouvement' : identificateur non déclaré
  2. Camera.cpp


 
Je ne pense pas (??) que l'erreur soit liée au template puisque si j'enlève la ligne QStack<Mouvement> mouvements; et que je la remplace par un simple Mouvement essai; pour voir, j'obtiens :
 

Code :
  1. ...\visual studio 2005\projects\jeu sokoban\Camera.h(23) : error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'essai'
  2. ...\visual studio 2005\projects\jeu sokoban\Camera.h(23) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
  3. ...\visual studio 2005\projects\jeu sokoban\Camera.h(23) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut


 
Voilà. Est-ce que quelqu'un à une idée ? Merci d'avance :)


Message édité par Upsilon le 18-12-2007 à 16:15:39
mood
Publicité
Posté le 18-12-2007 à 15:23:08  profilanswer
 

n°1660002
IrmatDen
Posté le 18-12-2007 à 15:27:46  profilanswer
 

Salut,
 
Y'a un problème au niveau de ta classe Mouvement:

Code :
  1. include "Mouvement.h"
  2. class Mouvement
  3. ...


Il y a combien de définitions de la classe

n°1660005
Upsilon
Posté le 18-12-2007 à 15:34:12  profilanswer
 

Merci d'avoir répondu aussi vite ;)  
 
Ben une seul, un seul fichier Mouvement.h :??: (Ou je n'ai pas compris la question ?)


Message édité par Upsilon le 18-12-2007 à 15:35:45
n°1660015
IrmatDen
Posté le 18-12-2007 à 15:39:08  profilanswer
 

Y'a quoi dans Mouvement.h ? Tu n'y déclare pas la classe Mouvement?

n°1660017
Upsilon
Posté le 18-12-2007 à 15:40:50  profilanswer
 

Il y a le code que j'ai mis dans mon premier message (premier encadré)

n°1660021
IrmatDen
Posté le 18-12-2007 à 15:45:04  profilanswer
 

Pourquoi l'inclues-tu dans lui-même?
 
Bon, le vrai coeur du problème, c'est que tu as une dépendance mutuelle: Camera a besoin de Mouvement et inversement
(Ou plus exactement, c'est ce que tu as codé).
 
Mouvement n'a (ici) pas besoin de Camera, donc supprimes l'include a Camera. Si plus tard tu en as besoin, il te faudra utiliser une forward declaration (désolé, j'ai pas de terme français). Au passage, il est préférable de les utiliser un maximum, un petit tour sur Google t'en diras plus sur le sujet.

n°1660030
Upsilon
Posté le 18-12-2007 à 15:54:22  profilanswer
 

Citation :

Bon, le vrai coeur du problème, c'est que tu as une dépendance mutuelle: Camera a besoin de Mouvement et inversement  
(Ou plus exactement, c'est ce que tu as codé).  
 
Mouvement n'a (ici) pas besoin de Camera, donc supprimes l'include a Camera. Si plus tard tu en as besoin, il te faudra utiliser une forward declaration (désolé, j'ai pas de terme français). Au passage, il est préférable de les utiliser un maximum, un petit tour sur Google t'en diras plus sur le sujet.


 
Merci pour ton aide  :jap: , c'était bien ça ! :love:
 
Mouvement n'utilisera de toute façons jamais Camera, donc ça ira comme ça, merci pour l'info au passage.
 
Franchement, je n'y aurais jamais pensé... Heureusement que j'ai posé la question :sweat:  
 

Citation :

Pourquoi l'inclues-tu dans lui-même?


J'essayais un peu au hasard ;)

n°1660059
Joel F
Real men use unique_ptr
Posté le 18-12-2007 à 16:17:17  profilanswer
 

y a pas de hasard en prog :o

n°1660067
Upsilon
Posté le 18-12-2007 à 16:24:43  profilanswer
 

Bah des fois ça marche et ça évite de passer 2h pour une bêtise :o  
 
(Même si sur ce coup c'était loupé :D )

n°1660095
IrmatDen
Posté le 18-12-2007 à 16:55:22  profilanswer
 

Rappel: Garcimore n'est effectivement pas connu pour ses programmes [:petrus75]

mood
Publicité
Posté le 18-12-2007 à 16:55:22  profilanswer
 

n°1660118
Joel F
Real men use unique_ptr
Posté le 18-12-2007 à 17:20:45  profilanswer
 

Upsilon a écrit :

Bah des fois ça marche


 
ca ne amrche pas, par contre ca montre bien que tu pipe rien à ce que tu écris (:o)

n°1660171
Upsilon
Posté le 18-12-2007 à 18:30:43  profilanswer
 

Je ne dis pas que programmer au hasard est une solution... Ce que je dis c'est que pour les détails techniques genre syntaxe ou autre il est parfois plus simple d'essayer plusieurs possibilités que de se farcir 2 pages de doc :o

n°1660178
IrmatDen
Posté le 18-12-2007 à 18:38:32  profilanswer
 

Non. Parce que ton erreur tu la referas sans cesse, et crois moi l'alignement des planètes ne joue pas en ta faveur.
Le forum n'est pas là pour t'éviter de te farcir 2 pages de doc, mais plutôt pour qu'on (essaie) de t'aiguiller dans la bonne direction et lire les bonnes choses; ce qui implique pas mal de travail personnel malgré tout.

n°1660190
Joel F
Real men use unique_ptr
Posté le 18-12-2007 à 19:05:33  profilanswer
 

Upsilon a écrit :

Je ne dis pas que programmer au hasard est une solution... Ce que je dis c'est que pour les détails techniques genre syntaxe ou autre il est parfois plus simple d'essayer plusieurs possibilités que de se farcir 2 pages de doc :o


 
Un jour normal, je t'aurais dit d'aller mourir.
 
 
 
C'est un jour normal :|

n°1660229
Upsilon
Posté le 18-12-2007 à 20:59:22  profilanswer
 

Citation :

Le forum n'est pas là pour t'éviter de te farcir 2 pages de doc


Je précise juste que je n'ai pas utilisé le forum dans ce but et que si j'ai posé la question c'est justement parce que je ne savais pas dans quelle direction chercher le problème.
 
Sur ce, bonsoir :sleep:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++][Résolu] Le compilateur semble ignorer une classe : pourquoi ?

 

Sujets relatifs
[Resolu] Update ADODB ne fonctionne pas[Resolu] [Problème] [Perl,Tableaux] lire un fichier texte
[RESOLU] Integration variable dans un chemin javascript[RESOLU]Afficher le poids des fichiers listés automatiquement en PHP
[c++][resolu]Problème de compilation.[C++] [résolu] Besoin d'un coup de main pour déboguer mon algo de tri
[Résolu] Site internet en japonais[resolu]Boucles sur des requetes MySQL
[résolu] Automatiser une fonction excel sur vba[PHP](AJAX) - Pb Caractères spéciaux (apostrophe) ..euh RESOLU en fait
Plus de sujets relatifs à : [C++][Résolu] Le compilateur semble ignorer une classe : pourquoi ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR