 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Gabriel Landais Guest
|
Posted: Fri Mar 05, 2004 1:25 pm Post subject: Reference croisée, question de NEWBIE! |
|
|
Salut,
j'ai deux .h ainsi fait:
--- Chien.h ---
class Chien;
#include "Homme.h"
class Chien : public TObject
{
public :
Homme *tintin;
};
--- Homme.h ---
class Homme;
#include "Chien.h"
class Homme : public TObject
{
public :
Chien *milou;
};
----------------
Je trouve ca assez hideux comme solution, yaurait pas mieux?
Merci!
Gabriel
|
|
| Back to top |
|
 |
Le Géant Vert Guest
|
Posted: Fri Mar 05, 2004 2:02 pm Post subject: Re: Reference croisée, question de NEWBIE! |
|
|
Gabriel Landais wrote:
| Quote: | Salut,
j'ai deux .h ainsi fait:
--- Chien.h ---
class Chien;
#include "Homme.h"
class Chien : public TObject
{
public :
Homme *tintin;
};
--- Homme.h ---
class Homme;
#include "Chien.h"
class Homme : public TObject
{
public :
Chien *milou;
};
----------------
Je trouve ca assez hideux comme solution, yaurait pas mieux?
Merci!
Gabriel
|
absolument pas, c'est LA bonne solution :)
|
|
| Back to top |
|
 |
Rémy Guest
|
Posted: Fri Mar 05, 2004 2:07 pm Post subject: Re: Reference croisée, question de NEWBIE! |
|
|
"Le Géant Vert" <_NOSPAM_legeantvert (AT) tiscali (DOT) fr> a écrit dans le message de
news:c2a19g$gic$1 (AT) news (DOT) tiscali.fr...
| Quote: | Gabriel Landais wrote:
Salut,
j'ai deux .h ainsi fait:
--- Chien.h ---
class Chien;
#include "Homme.h"
class Chien : public TObject
{
public :
Homme *tintin;
};
--- Homme.h ---
class Homme;
#include "Chien.h"
class Homme : public TObject
{
public :
Chien *milou;
};
----------------
Je trouve ca assez hideux comme solution, yaurait pas mieux?
Merci!
Gabriel
absolument pas, c'est LA bonne solution
|
Sauf qu'il faut protéger les includes contre les inclusions multiples (sinon
ça boucle)...
|
|
| Back to top |
|
 |
Gabriel Landais Guest
|
Posted: Fri Mar 05, 2004 2:09 pm Post subject: Re: Reference croisée, question de NEWBIE! |
|
|
Avec
#ifndef HommeH
#define HommeH
....
#endif?
Merci :)
Rémy a écrit :
| Quote: | Sauf qu'il faut protéger les includes contre les inclusions multiples (sinon
ça boucle)...
|
|
|
| Back to top |
|
 |
Rémy Guest
|
Posted: Fri Mar 05, 2004 2:13 pm Post subject: Re: Reference croisée, question de NEWBIE! |
|
|
"Gabriel Landais" <gabriel.landaisemnSPROUTCH (AT) laposte (DOT) net> a écrit dans le
message de news:c2a1n4$mjg$1 (AT) news-reader4 (DOT) wanadoo.fr...
| Quote: | Avec
#ifndef HommeH
#define HommeH
...
#endif?
Merci :)
|
Tout à fait.
L'autre solution est:
--- Chien.h ---
class Homme;
class Chien : public TObject
{
public :
Homme *tintin;
};
--- Homme.h ---
class Chien;
class Homme : public TObject
{
public :
Chien *milou;
};
----------------
On n'a pas besoin d'inclure la définition complète de Homme dans Chien.h
puisqu'on n'utilise qu'un pointeur. Il suffit de savoir que c'est une
classe. (et réciproquement).
Ce qui n'empêche pas de protéger les includes (on ne sait jamais par quel
chemin ils finiront par être appelés).
Rémy
|
|
| Back to top |
|
 |
Gabriel Landais Guest
|
Posted: Fri Mar 05, 2004 2:50 pm Post subject: Re: Reference croisée, question de NEWBIE! |
|
|
Merci ca devient plus clair maintennant
Une dernière question, j'utilise GDI+ un peu partout dans mes fichiers,
je comprend pas vraiment comment l'inclure qu'une seule fois pour tout
le projet, parce que la il me l'include au moins 5 fois!
Merci!
Gabriel
Rémy a écrit :
| Quote: | "Gabriel Landais" <gabriel.landaisemnSPROUTCH (AT) laposte (DOT) net> a écrit dans le
message de news:c2a1n4$mjg$1 (AT) news-reader4 (DOT) wanadoo.fr...
Avec
#ifndef HommeH
#define HommeH
...
#endif?
Merci :)
Tout à fait.
L'autre solution est:
--- Chien.h ---
class Homme;
class Chien : public TObject
{
public :
Homme *tintin;
};
--- Homme.h ---
class Chien;
class Homme : public TObject
{
public :
Chien *milou;
};
----------------
On n'a pas besoin d'inclure la définition complète de Homme dans Chien.h
puisqu'on n'utilise qu'un pointeur. Il suffit de savoir que c'est une
classe. (et réciproquement).
Ce qui n'empêche pas de protéger les includes (on ne sait jamais par quel
chemin ils finiront par être appelés).
Rémy
|
|
|
| Back to top |
|
 |
Michel Michaud Guest
|
Posted: Fri Mar 05, 2004 3:23 pm Post subject: Re: Reference croisée, question de NEWBIE! |
|
|
Dans news:c2a19g$gic$1 (AT) news (DOT) tiscali.fr, Le Géant
Vert <_NOSPAM_legeantvert (AT) tiscali (DOT) fr> a écrit :
| Quote: | Gabriel Landais wrote:
Salut,
j'ai deux .h ainsi fait:
--- Chien.h ---
class Chien;
#include "Homme.h"
class Chien : public TObject
{
public :
Homme *tintin;
};
--- Homme.h ---
class Homme;
#include "Chien.h"
class Homme : public TObject
{
public :
Chien *milou;
};
----------------
Je trouve ca assez hideux comme solution, yaurait pas mieux?
Merci!
Gabriel
absolument pas, c'est LA bonne solution
|
Non, la bonne solution est de rendre les fichiers d'en-tête
assez complets en eux-mêmes, donc la déclaration des classes
devraient y être placées. Donc class Chien; devrait être
dans Homme.h et class Homme; dans Chien.h et alors il n'est
probablement pas nécessaire d'inclure les fichiers d'en-tête
de l'autre type. (Bien sûr, il faut aussi la protection contre
les inclusions multiples, mais c'est tout autre problème).
--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|