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

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Include conflit...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Include conflit...

n°1337501
iS@mi
Resistance is futile !
Posté le 02-04-2006 à 23:18:59  profilanswer
 

Bonjour à tous,
je suis confronté à un problème de conflit d'include dans la gestion de mes classes.
 
J'ai deux classes : NSWindow et NSControl
 
Le programme se présente de cette manière ci :
 

Code :
  1. class NSWindow;
  2. class NSControl
  3. {
  4.     NSControl(NSWindow *pWindow);
  5.     // etc, etc ...
  6. }
  7. class NSWindow : public std::vector<NSControl*>
  8. {
  9.     // etc, etc ...
  10. }


Maintenant j'aimerais bien placer ma classe NSControl dans un fichier NSControl.h et NSWindow dans un fichier NSWindow.h mais quand je fais cela j'ai plein d'erreurs à la compilation.
 
Voici l'exemple de ce que je veux faire :
 
NSControl.h :

Code :
  1. #pragma once
  2. #ifndef NSControl_H
  3. #define NSControl_H
  4. #include "NSWindow.h"
  5. class NSControl
  6. {
  7.     NSControl(NSWindow *pWindow);
  8.     // etc, etc ...
  9. }
  10. #endif


 
NSWindow.h :

Code :
  1. #pragma once
  2. #ifndef NSWindow_H
  3. #define NSWindow_H
  4. #include "NSControl.h"
  5. class NSWindow : public std::vector<NSControl*>
  6. {
  7.     // etc, etc ...
  8. }
  9. #endif


 
Le problème est que comme j'ai déjà inclu NSWindow.h dans le fichier NSControl.h, ca crée des conflits dans NSWindow.h puisque j'include le "NSControl.h" qui contient déjà le NHWindow.h.
Ca me fait des tonnes d'erreurs lorsque je compile ! :(
 
Y a t'il une solution pour éviter ce conflit ?
 
Un grand merci
 
 

mood
Publicité
Posté le 02-04-2006 à 23:18:59  profilanswer
 

n°1337511
nargy
Posté le 03-04-2006 à 00:00:07  profilanswer
 

ouais: faire des .cpp

n°1337513
chrisbk
-
Posté le 03-04-2006 à 00:09:33  profilanswer
 

dans NSControl.H, fais une forward declaration sur NSWindows, et vire l'include nswindows.h
 
(tes #ifndef /  #define sont redondants avec #pragma once)

n°1337514
chrisbk
-
Posté le 03-04-2006 à 00:10:01  profilanswer
 

cela dit je trouve ton design assez baroque

n°1337515
iS@mi
Resistance is futile !
Posté le 03-04-2006 à 00:12:36  profilanswer
 

chrisbk a écrit :

cela dit je trouve ton design assez baroque


 
càd à quel niveau ?
 
 
Donc j'ai juste fait un class NSWindow; en virant le "NSWindow.h" et ca marche.
 
Je suis assez étonné car dans ma tête j'avais vraiment besoin de faire l'include de NSWindow pour qu'il puisse identifier le "class NSWindow;" ?
 
Sinon j'ai viré #pragam once (habitude de mettre ca avec MFC).
 
Merci


Message édité par iS@mi le 03-04-2006 à 00:33:31
n°1337519
chrisbk
-
Posté le 03-04-2006 à 00:46:05  profilanswer
 

bin non, class NSWindow sert a dire justement "y'a un truc qui s'apelle NSWindow, ca definit une classe. La def exacte, on verra plus tard si besoin", en gros

n°1337559
slash33
Posté le 03-04-2006 à 09:28:05  profilanswer
 

chrisbk a écrit :

tes #ifndef /  #define sont redondants avec #pragma once


Tu peux développer ce point STP?
 
Ca fait quoi concrètement #pragma once ?

n°1337586
chrisbk
-
Posté le 03-04-2006 à 10:07:13  profilanswer
 

bin ca assure betement qu'un fichier n'est inclu qu'une fois, donc faire pragma once et ensuite utiliser #ifndef/#define derriere pour faire grosso modo la meme chose n'a pas grand interet

n°1338331
iS@mi
Resistance is futile !
Posté le 04-04-2006 à 00:29:25  profilanswer
 

chrisbk a écrit :

bin ca assure betement qu'un fichier n'est inclu qu'une fois, donc faire pragma once et ensuite utiliser #ifndef/#define derriere pour faire grosso modo la meme chose n'a pas grand interet


 
Et qu'est ce qui est mieux à utiliser même si les deux font strictement la même chose ?

n°1338337
nargy
Posté le 04-04-2006 à 00:46:06  profilanswer
 

les pragma dépendent des compilateurs, alors mieux vaut les éviter pour faire du code portable.


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

  [C++] Include conflit...

 

Sujets relatifs
[PHP] *Resolu * Problème de chemin avec les "include"$_SESSION + Include
[Very Newbies] include help 2[Very Newbies] include help
Include pour un menuProblème include sur exemple (résolu)
include perl xpmProblème avec include
Question sécurité include()Envoi de mail html avec un include en php impossible?
Plus de sujets relatifs à : [C++] Include conflit...


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