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

  FORUM HardWare.fr
  Programmation

  [c++] include qui boucle, comment je fait ???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c++] include qui boucle, comment je fait ???

n°116264
fucky_fuck
Posté le 22-03-2002 à 19:20:33  profilanswer
 

Bon alors voilà, j'ai un fichier bot.h qui inclut weapon.h qui inclut BulletManager.h qui inclut lui même une classe dérivée de bot.h... ce qui nous fait une belle boucle, et VC++ 6 n'arrive pas à s'en dépétrer...
 
Alors j'avais penser faire une super-classe bot, avec des fonctions virtuelles et mettre ça dans BulletManager, comme ça pas de boucle...
 
Mais bon, je pensait qu'on pouvait faire mieux, et mon prof d'info m'a dit de déclarer la classe et les prototypes avant...
 
alors dans bot.h , je n'inclus pas weapon, et je met à la place :
class weapon;
 
quand je compile, ça marche, mais si j'essaie de faire
weapon * = new weapon [2];
 
il me dit qu'il trouve pas le constructeur... alors que j'ai vérifié, weapon possède bien un constructeur par défaut...
 
bon alors je me dit, pas grave je vais mettre le prototype comme a dit le prof, comme ça il le trouvera, ce qui nous donne :
 
class weapon;
weapon::weapon();
 
mais là, il met : use of undefined class weapon...
 
bon je commence à croire, que je faire mon coup de la super-classe, mais je tente ici au cas ou vous auriez une idée...
 
Je tiens à préciser qu'il s'agit d'un cas de boucle et pas juste de deux fichiers comme ça...
 
une idée siouplait...

mood
Publicité
Posté le 22-03-2002 à 19:20:33  profilanswer
 

n°116267
Ace17
Posté le 22-03-2002 à 19:24:53  profilanswer
 

Est-ce que tu mets des directives pour prévenir l'inclusion multiple?
 
#ifdef MONFICHIER_H
#define MONFICHIER_H
 
// contenu du header
 
#endif

n°116269
bjone
Insert booze to continue
Posté le 22-03-2002 à 19:32:15  profilanswer
 

je suis d'accord avec le monsieur.

n°116404
fucky_fuck
Posté le 23-03-2002 à 00:08:01  profilanswer
 

oui,oui, j'avais oublier de le préciser...
en plus avec vc++ 6, c'est facile, y'a la macro oneTimeInclude...
Non,merci mais c'est pas ça, une autre idée ?

n°116431
youdontcar​e
Posté le 23-03-2002 à 01:07:12  profilanswer
 

une solution est de ne déclarer qu'un pointeur dans le .h et de faire l'include dans le .cpp (ou .c)
 
eg la class otherClass utilise la class myFile, et la classe myFile utilise la classe otherClass :
 
// myFile.h :
 
class otherClass;
 
class myFile
{
  myFile();
  otherClass* myOtherClass;
}
 
// myFile.cpp :
 
#include "otherClass.h";
 
myFile::myFile()
{
   myOtherClass = otherClass;
}
 
//
 
je file l'exemple en c++, c'est le même principe en C.
 
il est également possible que ce soit un problème de design.

n°116445
LeGreg
Posté le 23-03-2002 à 01:59:38  profilanswer
 

Fucky_Fuck a écrit a écrit :

 
alors dans bot.h , je n'inclus pas weapon, et je met à la place :
class weapon;
quand je compile, ça marche, mais si j'essaie de faire
weapon * = new weapon [2];
il me dit qu'il trouve pas le constructeur... alors que j'ai vérifié, weapon possède bien un constructeur par défaut...




 
weapon est une classe vide tant que tu ne l'as
pas defini en entier! (avec ses membres)
C'est donc logique que tu ne puisses pas appeler le constructeur.
 
Mettre 'class weapon;' dans bot.h
n'exclut pas d'inclure le header necessaire
dans ton bot.cpp
C'est pour ca qu'on separe declaration
et implantation: tu n'as pas besoin d'inclure
les cpp par contre, les .h doivent bien
etre inclus quelque part.
 
De plus dans la phase de compilation considere
chaque .cpp comme un module a part entiere
une compilation d'un .cpp n'influe pas sur  
la compilation d'un autre .cpp.
C'est lors de l'edition des liens que la reunion
se fera. Ce qui veut dire qu'un .cpp ne peut se contenter
d'une definition incomplete.
 
A+
LEGREG

 

[jfdsdjhfuetppo]--Message édité par legreg--[/jfdsdjhfuetppo]

n°116502
fucky_fuck
Posté le 23-03-2002 à 13:08:13  profilanswer
 

Ah ça y est j'ai compris...
Merci beaucoup, là vous me sauvez la vie...

n°116558
*syl*
--> []
Posté le 23-03-2002 à 17:29:18  profilanswer
 

Ace17 a écrit a écrit :

Est-ce que tu mets des directives pour prévenir l'inclusion multiple?
 
#ifdef MONFICHIER_H
#define MONFICHIER_H
 
// contenu du header
 
#endif  




#ifndef MONFICHIER_H

n°116577
Ace17
Posté le 23-03-2002 à 18:39:21  profilanswer
 

*Syl* a écrit a écrit :

 
#ifndef MONFICHIER_H  




 
Oulalala! Je suis impardonnable!! Désolé pour cette erreur grossiere!  :)


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

  [c++] include qui boucle, comment je fait ???

 

Sujets relatifs
[PHP] Cool je sais faire une boucle... euh... oui mais plus simple non[Apache/Unix] Processus qui boucle
php - include dans une variable - urgent[Apache / PHP].htaccess detourné par un include ???
[PHP] INCLUDE---> Je n'y arrive pas[php]include et free.fr...
comment faire un boucle infinie en PHP[NB][PHP]Pb de lien HyperText ds une boucle pour rempli une table
pb: php.ini et include_pathINCLUDE d'une page html dans une autre
Plus de sujets relatifs à : [c++] include qui boucle, comment je fait ???


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