J'hésitais à poser cette question dans le newsgroup C++ mais
finalement je me dis que ça a peut-être un rapport avec Windows,
les MFC et ses fabuleuses macro et tout ce tralala.
En fait j'ai une application MFC, et avec 12 fichiers .cpp et 12
autres fichiers .h. Pour mes fichiers includes, j'utilise des
#ifndef ..
#define
...
#endif
(J'ai pas confiance aux #use de windows, j'avais déjà eu des
problèmes à cause de ça, enfin ici j'ai testé avec et le problème
est exactement le même).
Voilà, maintenant j'ai besoin de rajouter un include dans un .cpp
(qui se trouve déjà ailleurs dans mon projet, qui est déjà inclus et
aucun problème).
Là, c'est le drame, voilà les erreurs de compilation que j'obtiens alors
qu'avant (sans cet include) j'en ai aucune :
- ResultView.h(13): error C2143: erreur de syntaxe : absence de ';' avant
'*'
- CRootView' : Spécificateurs de type ou de classe de stockage manquants
- ResultView.h(13): error C2501: 'CResultView::wRoot' : Spécificateurs de
type ou de classe de stockage manquants
Ce qui est étonnant c'est que ces erreurs se trouvent alors dans le fichier
.h
que j'ai justement inclus. Comme je l'ai déjà dis, ce fichier est déjà
inclus
dans d'autres fichiers et jamais il n'avait eu cet effet là.
Vous avez des idées ? Si vous voulez je peux vous envoyer mon code (mais
pas le poster, c'est beaucoup trop gros).
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
Nico
> Voilà, maintenant j'ai besoin de rajouter un include dans un .cpp (qui se trouve déjà ailleurs dans mon projet, qui est déjà inclus et aucun problème).
Là, c'est le drame, voilà les erreurs de compilation que j'obtiens alors qu'avant (sans cet include) j'en ai aucune :
- ResultView.h(13): error C2143: erreur de syntaxe : absence de ';' avant '*' - CRootView' : Spécificateurs de type ou de classe de stockage manquants - ResultView.h(13): error C2501: 'CResultView::wRoot' : Spécificateurs de type ou de classe de stockage manquants
Ce qui est étonnant c'est que ces erreurs se trouvent alors dans le
fichier
.h que j'ai justement inclus. Comme je l'ai déjà dis, ce fichier est déjà inclus dans d'autres fichiers et jamais il n'avait eu cet effet là.
Vous avez des idées ? Si vous voulez je peux vous envoyer mon code (mais pas le poster, c'est beaucoup trop gros).
Quelques idées : - soit ton .h est pas autonome. C'est facile à tester, tu crées un .cpp avec juste l'include et il doit compiler. - soit tu as des dépendances circulaires entre tes .h et çà se passe bien ou mal suivant quel .h est inclus en premier. Pour tester, un peu pareil, tu crées un .cpp avec juste un des include et puis tu essayes tous les cas de figure.
J'espère que çà t'aide.
> Voilà, maintenant j'ai besoin de rajouter un include dans un .cpp
(qui se trouve déjà ailleurs dans mon projet, qui est déjà inclus et
aucun problème).
Là, c'est le drame, voilà les erreurs de compilation que j'obtiens alors
qu'avant (sans cet include) j'en ai aucune :
- ResultView.h(13): error C2143: erreur de syntaxe : absence de ';' avant
'*'
- CRootView' : Spécificateurs de type ou de classe de stockage manquants
- ResultView.h(13): error C2501: 'CResultView::wRoot' : Spécificateurs de
type ou de classe de stockage manquants
Ce qui est étonnant c'est que ces erreurs se trouvent alors dans le
fichier
.h
que j'ai justement inclus. Comme je l'ai déjà dis, ce fichier est déjà
inclus
dans d'autres fichiers et jamais il n'avait eu cet effet là.
Vous avez des idées ? Si vous voulez je peux vous envoyer mon code (mais
pas le poster, c'est beaucoup trop gros).
Quelques idées :
- soit ton .h est pas autonome. C'est facile à tester, tu crées un .cpp avec
juste l'include et il doit compiler.
- soit tu as des dépendances circulaires entre tes .h et çà se passe bien ou
mal suivant quel .h est inclus en premier. Pour tester, un peu pareil, tu
crées un .cpp avec juste un des include et puis tu essayes tous les cas de
figure.
> Voilà, maintenant j'ai besoin de rajouter un include dans un .cpp (qui se trouve déjà ailleurs dans mon projet, qui est déjà inclus et aucun problème).
Là, c'est le drame, voilà les erreurs de compilation que j'obtiens alors qu'avant (sans cet include) j'en ai aucune :
- ResultView.h(13): error C2143: erreur de syntaxe : absence de ';' avant '*' - CRootView' : Spécificateurs de type ou de classe de stockage manquants - ResultView.h(13): error C2501: 'CResultView::wRoot' : Spécificateurs de type ou de classe de stockage manquants
Ce qui est étonnant c'est que ces erreurs se trouvent alors dans le
fichier
.h que j'ai justement inclus. Comme je l'ai déjà dis, ce fichier est déjà inclus dans d'autres fichiers et jamais il n'avait eu cet effet là.
Vous avez des idées ? Si vous voulez je peux vous envoyer mon code (mais pas le poster, c'est beaucoup trop gros).
Quelques idées : - soit ton .h est pas autonome. C'est facile à tester, tu crées un .cpp avec juste l'include et il doit compiler. - soit tu as des dépendances circulaires entre tes .h et çà se passe bien ou mal suivant quel .h est inclus en premier. Pour tester, un peu pareil, tu crées un .cpp avec juste un des include et puis tu essayes tous les cas de figure.
J'espère que çà t'aide.
TigrouMeow
"Nico" a écrit dans le message de news: 42598a6e$0$15279$
Voilà, maintenant j'ai besoin de rajouter un include dans un .cpp (qui se trouve déjà ailleurs dans mon projet, qui est déjà inclus et aucun problème).
Là, c'est le drame, voilà les erreurs de compilation que j'obtiens alors qu'avant (sans cet include) j'en ai aucune :
- ResultView.h(13): error C2143: erreur de syntaxe : absence de ';' avant '*' - CRootView' : Spécificateurs de type ou de classe de stockage manquants - ResultView.h(13): error C2501: 'CResultView::wRoot' : Spécificateurs de type ou de classe de stockage manquants
Ce qui est étonnant c'est que ces erreurs se trouvent alors dans le
fichier
.h que j'ai justement inclus. Comme je l'ai déjà dis, ce fichier est déjà inclus dans d'autres fichiers et jamais il n'avait eu cet effet là.
Vous avez des idées ? Si vous voulez je peux vous envoyer mon code (mais pas le poster, c'est beaucoup trop gros).
Quelques idées : - soit ton .h est pas autonome. C'est facile à tester, tu crées un .cpp avec juste l'include et il doit compiler. - soit tu as des dépendances circulaires entre tes .h et çà se passe bien ou mal suivant quel .h est inclus en premier. Pour tester, un peu pareil, tu crées un .cpp avec juste un des include et puis tu essayes tous les cas de figure.
J'espère que çà t'aide.
En fait je suis sur que c'est ce problème de "dépendance circulaire", car mes fichiers indépendamment compilent sans problème. Par contre pour résoudre ça, c'est vraiment costaud... j'aurais peut etre du mieux pensé mon truc dès le départ.
"Nico" <nvervell@club-internet.fr> a écrit dans le message de news:
42598a6e$0$15279$7a628cd7@news.club-internet.fr...
Voilà, maintenant j'ai besoin de rajouter un include dans un .cpp
(qui se trouve déjà ailleurs dans mon projet, qui est déjà inclus et
aucun problème).
Là, c'est le drame, voilà les erreurs de compilation que j'obtiens alors
qu'avant (sans cet include) j'en ai aucune :
- ResultView.h(13): error C2143: erreur de syntaxe : absence de ';' avant
'*'
- CRootView' : Spécificateurs de type ou de classe de stockage manquants
- ResultView.h(13): error C2501: 'CResultView::wRoot' : Spécificateurs de
type ou de classe de stockage manquants
Ce qui est étonnant c'est que ces erreurs se trouvent alors dans le
fichier
.h
que j'ai justement inclus. Comme je l'ai déjà dis, ce fichier est déjà
inclus
dans d'autres fichiers et jamais il n'avait eu cet effet là.
Vous avez des idées ? Si vous voulez je peux vous envoyer mon code (mais
pas le poster, c'est beaucoup trop gros).
Quelques idées :
- soit ton .h est pas autonome. C'est facile à tester, tu crées un .cpp
avec
juste l'include et il doit compiler.
- soit tu as des dépendances circulaires entre tes .h et çà se passe bien
ou
mal suivant quel .h est inclus en premier. Pour tester, un peu pareil, tu
crées un .cpp avec juste un des include et puis tu essayes tous les cas de
figure.
J'espère que çà t'aide.
En fait je suis sur que c'est ce problème de "dépendance circulaire", car
mes fichiers indépendamment compilent sans problème.
Par contre pour résoudre ça, c'est vraiment costaud... j'aurais peut etre
du mieux pensé mon truc dès le départ.
"Nico" a écrit dans le message de news: 42598a6e$0$15279$
Voilà, maintenant j'ai besoin de rajouter un include dans un .cpp (qui se trouve déjà ailleurs dans mon projet, qui est déjà inclus et aucun problème).
Là, c'est le drame, voilà les erreurs de compilation que j'obtiens alors qu'avant (sans cet include) j'en ai aucune :
- ResultView.h(13): error C2143: erreur de syntaxe : absence de ';' avant '*' - CRootView' : Spécificateurs de type ou de classe de stockage manquants - ResultView.h(13): error C2501: 'CResultView::wRoot' : Spécificateurs de type ou de classe de stockage manquants
Ce qui est étonnant c'est que ces erreurs se trouvent alors dans le
fichier
.h que j'ai justement inclus. Comme je l'ai déjà dis, ce fichier est déjà inclus dans d'autres fichiers et jamais il n'avait eu cet effet là.
Vous avez des idées ? Si vous voulez je peux vous envoyer mon code (mais pas le poster, c'est beaucoup trop gros).
Quelques idées : - soit ton .h est pas autonome. C'est facile à tester, tu crées un .cpp avec juste l'include et il doit compiler. - soit tu as des dépendances circulaires entre tes .h et çà se passe bien ou mal suivant quel .h est inclus en premier. Pour tester, un peu pareil, tu crées un .cpp avec juste un des include et puis tu essayes tous les cas de figure.
J'espère que çà t'aide.
En fait je suis sur que c'est ce problème de "dépendance circulaire", car mes fichiers indépendamment compilent sans problème. Par contre pour résoudre ça, c'est vraiment costaud... j'aurais peut etre du mieux pensé mon truc dès le départ.
Patrick Philippot
TigrouMeow wrote:
En fait je suis sur que c'est ce problème de "dépendance circulaire", car mes fichiers indépendamment compilent sans problème. Par contre pour résoudre ça, c'est vraiment costaud... j'aurais peut etre du mieux pensé mon truc dès le départ.
Dans ce cas, procédez à un découpage de vos fichiers .h en unités indépendantes (qui compilent de manière autonome comme l'explique Nico).
Ou bien sortez les fichiers .h qui sont eux-mêmes inclus par ce/ces fichier(s) include et faites le #include à un autre niveau du code.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
TigrouMeow wrote:
En fait je suis sur que c'est ce problème de "dépendance circulaire",
car mes fichiers indépendamment compilent sans problème.
Par contre pour résoudre ça, c'est vraiment costaud... j'aurais peut
etre du mieux pensé mon truc dès le départ.
Dans ce cas, procédez à un découpage de vos fichiers .h en unités
indépendantes (qui compilent de manière autonome comme l'explique Nico).
Ou bien sortez les fichiers .h qui sont eux-mêmes inclus par ce/ces
fichier(s) include et faites le #include à un autre niveau du code.
--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
En fait je suis sur que c'est ce problème de "dépendance circulaire", car mes fichiers indépendamment compilent sans problème. Par contre pour résoudre ça, c'est vraiment costaud... j'aurais peut etre du mieux pensé mon truc dès le départ.
Dans ce cas, procédez à un découpage de vos fichiers .h en unités indépendantes (qui compilent de manière autonome comme l'explique Nico).
Ou bien sortez les fichiers .h qui sont eux-mêmes inclus par ce/ces fichier(s) include et faites le #include à un autre niveau du code.
-- Patrick Philippot - Microsoft MVP MainSoft Consulting Services www.mainsoft.fr
Jacky Goyon
"TigrouMeow" a écrit dans le message de news: 42599663$0$6750$
"Nico" a écrit dans le message de news: 42598a6e$0$15279$ > >> Voilà, maintenant j'ai besoin de rajouter un include dans un .cpp >> (qui se trouve déjà ailleurs dans mon projet, qui est déjà inclus et >> aucun problème). >> >> Là, c'est le drame, voilà les erreurs de compilation que j'obtiens
alors
>> qu'avant (sans cet include) j'en ai aucune : >> Vous avez des idées ? Si vous voulez je peux vous envoyer mon code
(mais
>> pas le poster, c'est beaucoup trop gros). >
idée 1 reconstruit tout : commande rebuild all idée 2 dans les settings de ton projet, onglet C/C++, category precompiled headers coche not using...
Jacky
"TigrouMeow" <TigrouMeowMEOW@OnLineONLINE.Fr> a écrit dans le message de
news: 42599663$0$6750$636a15ce@news.free.fr...
"Nico" <nvervell@club-internet.fr> a écrit dans le message de news:
42598a6e$0$15279$7a628cd7@news.club-internet.fr...
>
>> Voilà, maintenant j'ai besoin de rajouter un include dans un .cpp
>> (qui se trouve déjà ailleurs dans mon projet, qui est déjà inclus et
>> aucun problème).
>>
>> Là, c'est le drame, voilà les erreurs de compilation que j'obtiens
alors
>> qu'avant (sans cet include) j'en ai aucune :
>> Vous avez des idées ? Si vous voulez je peux vous envoyer mon code
(mais
>> pas le poster, c'est beaucoup trop gros).
>
idée 1
reconstruit tout : commande rebuild all
idée 2
dans les settings de ton projet, onglet C/C++, category precompiled headers
coche not using...
"TigrouMeow" a écrit dans le message de news: 42599663$0$6750$
"Nico" a écrit dans le message de news: 42598a6e$0$15279$ > >> Voilà, maintenant j'ai besoin de rajouter un include dans un .cpp >> (qui se trouve déjà ailleurs dans mon projet, qui est déjà inclus et >> aucun problème). >> >> Là, c'est le drame, voilà les erreurs de compilation que j'obtiens
alors
>> qu'avant (sans cet include) j'en ai aucune : >> Vous avez des idées ? Si vous voulez je peux vous envoyer mon code
(mais
>> pas le poster, c'est beaucoup trop gros). >
idée 1 reconstruit tout : commande rebuild all idée 2 dans les settings de ton projet, onglet C/C++, category precompiled headers coche not using...
Jacky
TigrouMeow
"Patrick Philippot" a écrit dans le message de news: d3d6go$2lcc$
TigrouMeow wrote:
En fait je suis sur que c'est ce problème de "dépendance circulaire", car mes fichiers indépendamment compilent sans problème. Par contre pour résoudre ça, c'est vraiment costaud... j'aurais peut etre du mieux pensé mon truc dès le départ.
Dans ce cas, procédez à un découpage de vos fichiers .h en unités indépendantes (qui compilent de manière autonome comme l'explique Nico).
Ou bien sortez les fichiers .h qui sont eux-mêmes inclus par ce/ces fichier(s) include et faites le #include à un autre niveau du code.
Alors en fait le problème c'est que j'ai une classe A qui contient un objet de type classe B et dans ma classe B j'ai un objet de type classe A.
Ce que je demande est peut-être impossible ?
"Patrick Philippot" <patrick.philippot@mainsoft.xx.fr> a écrit dans le
message de news: d3d6go$2lcc$1@biggoron.nerim.net...
TigrouMeow wrote:
En fait je suis sur que c'est ce problème de "dépendance circulaire",
car mes fichiers indépendamment compilent sans problème.
Par contre pour résoudre ça, c'est vraiment costaud... j'aurais peut
etre du mieux pensé mon truc dès le départ.
Dans ce cas, procédez à un découpage de vos fichiers .h en unités
indépendantes (qui compilent de manière autonome comme l'explique Nico).
Ou bien sortez les fichiers .h qui sont eux-mêmes inclus par ce/ces
fichier(s) include et faites le #include à un autre niveau du code.
Alors en fait le problème c'est que j'ai une classe A qui contient un
objet de type classe B et dans ma classe B j'ai un objet de type
classe A.
"Patrick Philippot" a écrit dans le message de news: d3d6go$2lcc$
TigrouMeow wrote:
En fait je suis sur que c'est ce problème de "dépendance circulaire", car mes fichiers indépendamment compilent sans problème. Par contre pour résoudre ça, c'est vraiment costaud... j'aurais peut etre du mieux pensé mon truc dès le départ.
Dans ce cas, procédez à un découpage de vos fichiers .h en unités indépendantes (qui compilent de manière autonome comme l'explique Nico).
Ou bien sortez les fichiers .h qui sont eux-mêmes inclus par ce/ces fichier(s) include et faites le #include à un autre niveau du code.
Alors en fait le problème c'est que j'ai une classe A qui contient un objet de type classe B et dans ma classe B j'ai un objet de type classe A.
Ce que je demande est peut-être impossible ?
Dominique Vaufreydaz
Bonjour,
Alors en fait le problème c'est que j'ai une classe A qui contient un objet de type classe B et dans ma classe B j'ai un objet de type classe A.
Avant la declaration de classe A, tu ecris : class B;
class A : { };
Et reciproquement pour ta classe B.
Doms.
Bonjour,
Alors en fait le problème c'est que j'ai une classe A qui contient un
objet de type classe B et dans ma classe B j'ai un objet de type
classe A.
Avant la declaration de classe A, tu ecris :
class B;
Alors en fait le problème c'est que j'ai une classe A qui contient un objet de type classe B et dans ma classe B j'ai un objet de type classe A.
Avant la declaration de classe A, tu ecris : class B;
class A : { };
Et reciproquement pour ta classe B.
Doms.
Alexandre
> Alors en fait le problème c'est que j'ai une classe A qui contient un objet de type classe B et dans ma classe B j'ai un objet de type classe A.
c'est impossible si B contient un A et A contient un B, l'une des 2 classes devant bien être déclarée avant l'autre... Par contre c'est possible si B contient un A* ou si A contient un B*, puisque le compilateur n'a pas besoin de la déclaration complète de la classe dans le cas d'un membre pointeur :
// fichier A.h class B; // déclaration "en avant", juste pour dire au compilo que B existe et qu'elle est une classe
class A { B* membreB; ... };
// fichier B.h #include "A.h" class B { A membreA; ...};
par exemple... Voir sur fr.comp.lang.c++ pour + de détails sur les dépendances circulaires (souvent dues à une erreur de conception)
Ce que je demande est peut-être impossible ?
> Alors en fait le problème c'est que j'ai une classe A qui contient un
objet de type classe B et dans ma classe B j'ai un objet de type
classe A.
c'est impossible si B contient un A et A contient un B, l'une des 2 classes
devant bien être déclarée avant l'autre...
Par contre c'est possible si B contient un A* ou si A contient un B*,
puisque le compilateur n'a pas besoin de la déclaration complète de la
classe dans le cas d'un membre pointeur :
// fichier A.h
class B; // déclaration "en avant", juste pour dire au compilo que B
existe et qu'elle est une classe
class A
{
B* membreB;
...
};
// fichier B.h
#include "A.h"
class B
{
A membreA;
...};
par exemple...
Voir sur fr.comp.lang.c++ pour + de détails sur les dépendances circulaires
(souvent dues à une erreur de conception)
> Alors en fait le problème c'est que j'ai une classe A qui contient un objet de type classe B et dans ma classe B j'ai un objet de type classe A.
c'est impossible si B contient un A et A contient un B, l'une des 2 classes devant bien être déclarée avant l'autre... Par contre c'est possible si B contient un A* ou si A contient un B*, puisque le compilateur n'a pas besoin de la déclaration complète de la classe dans le cas d'un membre pointeur :
// fichier A.h class B; // déclaration "en avant", juste pour dire au compilo que B existe et qu'elle est une classe
class A { B* membreB; ... };
// fichier B.h #include "A.h" class B { A membreA; ...};
par exemple... Voir sur fr.comp.lang.c++ pour + de détails sur les dépendances circulaires (souvent dues à une erreur de conception)
Ce que je demande est peut-être impossible ?
TigrouMeow
"Dominique Vaufreydaz" a écrit dans le message de news: d3e079$qck$
Bonjour,
Alors en fait le problème c'est que j'ai une classe A qui contient un objet de type classe B et dans ma classe B j'ai un objet de type classe A.
Avant la declaration de classe A, tu ecris : class B;
class A : { };
Et reciproquement pour ta classe B.
En fait j'ai essayé d'épurer au maximum tous mes fichiers au niveau des includes, et maintenant je PEUX faire mon include sans qu'il me sorte des erreurs. Par contre, dès que je déclare mon objet dans la classe, c'est LA qu'il me sort à nouveau des erreurs et elles n'ont pas beaucoup de rapport, les voici :
- RootView.h(10): error C2143: erreur de syntaxe : absence de ';' avant '*' - error C2501: 'CRootView::CResultView' : Spécificateurs de type ou de classe de stockage manquants - error C2501: 'CRootView::wResult' : Spécificateurs de type ou de classe de stockage manquants
Tout ça à cause de la déclaration d'un objet dans une classe... evidemment des classes de cet objet sont déjà ailleurs, et il y a aucun problème, donc à mon avis c'est toujours un problèmes liés aux includes et ce genre de choses, mais à savoir comment résoudre le problème je sais plus trop là...
Je suis un abonné aux problèmes en ce moment décidément ;)
"Dominique Vaufreydaz" <Dominique-Doms.Vaufreydaz@imag.fr> a écrit dans le
message de news: d3e079$qck$1@trompette.imag.fr...
Bonjour,
Alors en fait le problème c'est que j'ai une classe A qui contient un
objet de type classe B et dans ma classe B j'ai un objet de type
classe A.
Avant la declaration de classe A, tu ecris :
class B;
class A :
{
};
Et reciproquement pour ta classe B.
En fait j'ai essayé d'épurer au maximum tous mes fichiers au niveau
des includes, et maintenant je PEUX faire mon include sans qu'il me
sorte des erreurs.
Par contre, dès que je déclare mon objet dans la classe, c'est LA
qu'il me sort à nouveau des erreurs et elles n'ont pas beaucoup de
rapport, les voici :
- RootView.h(10): error C2143: erreur de syntaxe : absence de ';' avant '*'
- error C2501: 'CRootView::CResultView' : Spécificateurs de type ou de
classe de stockage manquants
- error C2501: 'CRootView::wResult' : Spécificateurs de type ou de classe de
stockage manquants
Tout ça à cause de la déclaration d'un objet dans une classe... evidemment
des classes de cet objet sont déjà ailleurs, et il y a aucun problème, donc
à mon avis c'est toujours un problèmes liés aux includes et ce genre de
choses, mais à savoir comment résoudre le problème je sais plus trop là...
Je suis un abonné aux problèmes en ce moment décidément ;)
"Dominique Vaufreydaz" a écrit dans le message de news: d3e079$qck$
Bonjour,
Alors en fait le problème c'est que j'ai une classe A qui contient un objet de type classe B et dans ma classe B j'ai un objet de type classe A.
Avant la declaration de classe A, tu ecris : class B;
class A : { };
Et reciproquement pour ta classe B.
En fait j'ai essayé d'épurer au maximum tous mes fichiers au niveau des includes, et maintenant je PEUX faire mon include sans qu'il me sorte des erreurs. Par contre, dès que je déclare mon objet dans la classe, c'est LA qu'il me sort à nouveau des erreurs et elles n'ont pas beaucoup de rapport, les voici :
- RootView.h(10): error C2143: erreur de syntaxe : absence de ';' avant '*' - error C2501: 'CRootView::CResultView' : Spécificateurs de type ou de classe de stockage manquants - error C2501: 'CRootView::wResult' : Spécificateurs de type ou de classe de stockage manquants
Tout ça à cause de la déclaration d'un objet dans une classe... evidemment des classes de cet objet sont déjà ailleurs, et il y a aucun problème, donc à mon avis c'est toujours un problèmes liés aux includes et ce genre de choses, mais à savoir comment résoudre le problème je sais plus trop là...
Je suis un abonné aux problèmes en ce moment décidément ;)
TigrouMeow
"Alexandre" a écrit dans le message de news: 425a9bdc$0$7517$
Alors en fait le problème c'est que j'ai une classe A qui contient un objet de type classe B et dans ma classe B j'ai un objet de type classe A.
c'est impossible si B contient un A et A contient un B, l'une des 2 classes devant bien être déclarée avant l'autre... Par contre c'est possible si B contient un A* ou si A contient un B*, puisque le compilateur n'a pas besoin de la déclaration complète de la classe dans le cas d'un membre pointeur :
// fichier A.h class B; // déclaration "en avant", juste pour dire au compilo que B existe et qu'elle est une classe
class A { B* membreB; ... };
// fichier B.h #include "A.h" class B { A membreA; ...};
par exemple... Voir sur fr.comp.lang.c++ pour + de détails sur les dépendances circulaires (souvent dues à une erreur de conception)
En effet c'est la bonne solution, de cette manière j'arrive à contourner le problème ! Bon à chaque fois que je compile j'ai une petite peur donc ça se trouve je reviendrai en pleurant une nouvelle fois mais bon je croise les doigts :)
Merci !
"Alexandre" <alex.g@netcourrier.com> a écrit dans le message de news:
425a9bdc$0$7517$626a14ce@news.free.fr...
Alors en fait le problème c'est que j'ai une classe A qui contient un
objet de type classe B et dans ma classe B j'ai un objet de type
classe A.
c'est impossible si B contient un A et A contient un B, l'une des 2
classes devant bien être déclarée avant l'autre...
Par contre c'est possible si B contient un A* ou si A contient un B*,
puisque le compilateur n'a pas besoin de la déclaration complète de la
classe dans le cas d'un membre pointeur :
// fichier A.h
class B; // déclaration "en avant", juste pour dire au compilo que B
existe et qu'elle est une classe
class A
{
B* membreB;
...
};
// fichier B.h
#include "A.h"
class B
{
A membreA;
...};
par exemple...
Voir sur fr.comp.lang.c++ pour + de détails sur les dépendances
circulaires (souvent dues à une erreur de conception)
En effet c'est la bonne solution, de cette manière j'arrive à contourner
le problème ! Bon à chaque fois que je compile j'ai une petite peur donc
ça se trouve je reviendrai en pleurant une nouvelle fois mais bon je croise
les doigts :)
"Alexandre" a écrit dans le message de news: 425a9bdc$0$7517$
Alors en fait le problème c'est que j'ai une classe A qui contient un objet de type classe B et dans ma classe B j'ai un objet de type classe A.
c'est impossible si B contient un A et A contient un B, l'une des 2 classes devant bien être déclarée avant l'autre... Par contre c'est possible si B contient un A* ou si A contient un B*, puisque le compilateur n'a pas besoin de la déclaration complète de la classe dans le cas d'un membre pointeur :
// fichier A.h class B; // déclaration "en avant", juste pour dire au compilo que B existe et qu'elle est une classe
class A { B* membreB; ... };
// fichier B.h #include "A.h" class B { A membreA; ...};
par exemple... Voir sur fr.comp.lang.c++ pour + de détails sur les dépendances circulaires (souvent dues à une erreur de conception)
En effet c'est la bonne solution, de cette manière j'arrive à contourner le problème ! Bon à chaque fois que je compile j'ai une petite peur donc ça se trouve je reviendrai en pleurant une nouvelle fois mais bon je croise les doigts :)
Merci !
Alexandre
> En effet c'est la bonne solution, de cette manière j'arrive à contourner le problème ! Bon à chaque fois que je compile j'ai une petite peur donc ça se trouve je reviendrai en pleurant une nouvelle fois mais bon je croise les doigts :)
Merci !
bonne chance !
> En effet c'est la bonne solution, de cette manière j'arrive à contourner
le problème ! Bon à chaque fois que je compile j'ai une petite peur donc
ça se trouve je reviendrai en pleurant une nouvelle fois mais bon je
croise
les doigts :)
> En effet c'est la bonne solution, de cette manière j'arrive à contourner le problème ! Bon à chaque fois que je compile j'ai une petite peur donc ça se trouve je reviendrai en pleurant une nouvelle fois mais bon je croise les doigts :)