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

  FORUM HardWare.fr
  Programmation
  C++

  [C++] include en boucle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] include en boucle

n°190168
_momone_
Posté le 05-08-2002 à 18:37:29  profilanswer
 

Je suis en train de programmer un petit moteur 3D et je me heurte à un problème:
 
Voici mon code:
 
SceneManager.h :

Code :
  1. #ifndef _SCENE_MANAGER_H_
  2. #define _SCENE_MANAGER_H_
  3. #include "Object.h"
  4. class SceneManager
  5. {
  6. private:
  7. vector<Object *> m_ObjectsList;
  8. public:
  9. void AddObject(Object *Object);
  10. bool RemoveObject(Object *Object);
  11. };
  12. #endif


 
J'aimerais que toutes les instances de la classe Object puissent accéder au SceneManager donc j'ai écrit la classe Object comme ceci:
 
Object.h :

Code :
  1. #ifndef _OBJECT_H_
  2. #define _OBJECT_H_
  3. #include "SceneManager.h"
  4. class Object
  5. {
  6. private:
  7. SceneManager *m_SceneManager;
  8. public:
  9. Object(SceneManager *SceneManager);
  10. };
  11. #endif


 
Le problème, c'est que lorsque je veux compiler ça, Visual C++ me met pleins de petites erreurs de compilation, du genre "SceneManager.h : error C2065: 'Object' : undeclared identifier"
J'ai vu en faisant une recherche dans le forum qu'il suffisait de mettre l'include de SceneManager dans Object.cpp au lieu de le mettre dans Object.h . Mais bon, ça n'a pas l'air très propre, et j'aimerais savoir si il existe une autre solution pour que mes Object accède tous à SceneManager, même en changeant l'architecture de la classe Object ou de la classe SceneManager.

mood
Publicité
Posté le 05-08-2002 à 18:37:29  profilanswer
 

n°190205
LeGreg
Posté le 05-08-2002 à 20:50:39  profilanswer
 

- regle 1, on n'inclut que ce qu'on a besoin
ici, tu n'as besoin que d'une forward declaration de Object dans Scenemanager.h
et une forward declaration de SceneManager dans Object.h
Une forward declaration de class ressemble a ca:

Code :
  1. class Object;


- Parfois tu cherches a obtenir "l'autosuffisance" de ton include (apres une indirection multiple par exemple) ce qui complete la regle numero 1 (mais ne la contredit pas), dans ce cas tu es autorisé a faire l'include mais n'enleve pas la forward declaration pour autant dans les deux fichiers comme ca tu n'as pas a te soucier de l'ordre de l'inclusion!
tu peux faire quelque comme ca:

Code :
  1. // Ici les inclusions (necessaires, n'en mets pas si tu as besoin d'un simple pointeur comme dans ton exemple)
  2. #include "Object.h"
  3. // Ici la forward declaration (necessaire si tu as déjà inclus object.h !)
  4. class Object;


 
A+
LeGreg

n°190268
_momone_
Posté le 05-08-2002 à 21:52:42  profilanswer
 

Merci :jap:


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

  [C++] include en boucle

 

Sujets relatifs
[PHP] Include et Dreamweaver 2erreur dans une boucle
Boucle en HTMLInclude html
[PHP] Comment sortir d'une boucle avant sa fininclude path ?
cherche include de linearisation et regression de modele[PHP] Encore cette boucle ... RHAAAAAAAAAAAAAA
(include_path=")pb d'argument dans un include
Plus de sujets relatifs à : [C++] include en boucle


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