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

  FORUM HardWare.fr
  Programmation
  C++

  [Class] declaration croisé

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Class] declaration croisé

n°953291
ffomnislas​h
Posté le 14-01-2005 à 19:18:47  profilanswer
 

Et oui c'est encore moi ;D
Aujourd'hui mon probleme est que j'ai un code de ce genre:
 

Code :
  1. #ifndef PANNEL
  2. #define PANNEL
  3. #include <SDL/SDL.h>
  4. #include <iostream.h>
  5. #include "./lst_int.h"
  6. #include "./lst_composant.h"
  7. #include "./composant.h"
  8. class pannel:public composant
  9. {
  10. protected:
  11. int largeur;
  12. int hauteur;
  13. lst_int **surface_comp;
  14. SDL_Surface *surface;
  15. lst_composant lst_comp;
  16. ...


 

Code :
  1. #ifndef COMPOSANT_H
  2. #define COMPOSANT_H
  3. #include <SDL/SDL.h>
  4. #include <stdlib.h>
  5. #include "./pannel.h"
  6. class composant
  7. {
  8. protected:
  9. pannel* pnl;
  10. int x;
  11. int y;
  12. int pos_pannel;
  13. ...


 
pannel.h a besoin de composant.h et vice versa, cela pose problême lors ed la compilation.
 
Si je fait
g++ -c pannel.h
le compilo va inclure composant.h avant de definir la class pannel
or pannel.h n'inclura pas composant.h (en raison du ifndef)
 
En général on résout ce problême avec une déclaration en avant, du genre
 

Code :
  1. typedef pannel;
  2. #include "./lst_int.h"
  3. #include "./lst_composant.h"
  4. #include "./composant.h"
  5. class pannel:public composant
  6. {
  7. protected:
  8. int largeur;
  9. int hauteur;
  10. lst_int **surface_comp;
  11. SDL_Surface *surface;
  12. lst_composant lst_comp;
  13. ..


 
idem pour l'autre fichier
 
Mais le compilo ne veut pas du typedef
 
Je ne sais pas comment résoudre ce probleme ...


Message édité par ffomnislash le 14-01-2005 à 19:19:43
mood
Publicité
Posté le 14-01-2005 à 19:18:47  profilanswer
 

n°953327
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-01-2005 à 20:32:37  profilanswer
 

dans le .h, ajoute la ligne  

Code :
  1. class Panel;


au début


---------------
J'ai un string dans l'array (Paris Hilton)
n°953406
ffomnislas​h
Posté le 14-01-2005 à 22:56:47  profilanswer
 

ok merci, je dois dire que j'avais deja essayé mais cela n'avait pas fonctionné car j'avais utilisé cette méthode partout or apparemment pour l'héritage il est nécessaire d'avoir la classe en entier et pas juste le nom.


Message édité par ffomnislash le 14-01-2005 à 22:57:12
n°953463
Profil sup​primé
Posté le 15-01-2005 à 00:17:41  answer
 

bin evidemment
réfléchis un peu à ce qu'est un héritage et tu verras que forcément une forward declaration ne suffit pas

n°953530
ffomnislas​h
Posté le 15-01-2005 à 11:32:15  profilanswer
 

c'est en reflechissant que j'ai compris :o


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

  [Class] declaration croisé

 

Sujets relatifs
class, surcharge, incompréhension.class qui gere une arborescence?
déclaration xml inattendue / erreur dans fichier xslt ?Probleme de declaration d'un tableau
[class] Surcharge d'opérateur +[JS] Déclaration de fonction dans une fonction
Probleme class java + windows xpProbleme class java + windows xp
include croisé[jsp]problème à la compilation : class file contains wrong class
Plus de sujets relatifs à : [Class] declaration croisé


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