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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Le Géant Vert
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 :)
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
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 :)
Rémy
"Le Géant Vert" a écrit dans le message de news:c2a19g$gic$
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)...
"Le Géant Vert" <_NOSPAM_legeantvert@tiscali.fr> a écrit dans le message de
news:c2a19g$gic$1@news.tiscali.fr...
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)...
"Le Géant Vert" a écrit dans le message de news:c2a19g$gic$
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)...
Gabriel Landais
Avec #ifndef HommeH #define HommeH ... #endif?
Merci :)
Sauf qu'il faut protéger les includes contre les inclusions multiples (sinon ça boucle)...
Avec
#ifndef HommeH
#define HommeH
...
#endif?
Merci :)
Sauf qu'il faut protéger les includes contre les inclusions multiples (sinon
ça boucle)...
Sauf qu'il faut protéger les includes contre les inclusions multiples (sinon ça boucle)...
Rémy
"Gabriel Landais" a écrit dans le message de news:c2a1n4$mjg$
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
"Gabriel Landais" <gabriel.landaisemnSPROUTCH@laposte.net> a écrit dans le
message de news:c2a1n4$mjg$1@news-reader4.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).
"Gabriel Landais" a écrit dans le message de news:c2a1n4$mjg$
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
Gabriel Landais
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
"Gabriel Landais" a écrit dans le message de news:c2a1n4$mjg$
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
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
"Gabriel Landais" <gabriel.landaisemnSPROUTCH@laposte.net> a écrit dans le
message de news:c2a1n4$mjg$1@news-reader4.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).
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
"Gabriel Landais" a écrit dans le message de news:c2a1n4$mjg$
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
Michel Michaud
Dans news:c2a19g$gic$, Le Géant
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 http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
Dans news:c2a19g$gic$1@news.tiscali.fr, Le Géant
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 mm@gdzid.com
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
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 http://www.gdzid.com FAQ de fr.comp.lang.c++ : http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/