Stuctures qui s'apellent mutuellement [Résolu]

Signaler
Messages postés
40
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
29 décembre 2010
-
Messages postés
14975
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
25 février 2021
-
Bonjour à tous,

Ca fait un petit moment déjà que je me pose la question suivante : Comment faire pour que le code suivant fonctionne :
struct A
{
    int toto;
    B *p_B;
};

struct B
{
    int tata;
    A *p_A;
};


A la compilation, évidemment, j'ai une erreur parce que le type B dans
B *p_B;
n'est pas connu. Si j'inverse :

struct B
{
    int tata;
    A *p_A;
};

struct A
{
    int toto;
    B *p_B;
};


evidemment cette fois ci c'est
A *p_A;
qui génère une erreur car A n'est pas connu.

komenkonfé ? C'est possible au moins ?

Merci ! (et bonnes fêtes de fin d'années )

<----------------------------------------------->
On reconnait un bon developpeur au baobab qu'il a dans la main...

4 réponses

Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
119
@buno: Pas forcément, certains design pattern l'utilisent (visitor par exemple). Néanmoins, tu soulèves un point intéressant.

@Daemonight: Prédéclare ce qu'il faut:
struct A; // Forward declaration
struct B
{
    int tata;
    A *p_A;
};

struct A
{
    int toto;
    B *p_B;
};


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
14975
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
25 février 2021
94
Hello,
Généralement, ce genre de souci met l'accent sur un problème d'architecture.
As-tu vraiment besoin de ce pointage mutuel?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Messages postés
40
Date d'inscription
mardi 24 août 2004
Statut
Membre
Dernière intervention
29 décembre 2010
1
Super merci ! J'aurai du penser à faire quelque chose dans ce goût là.

@Buno, en fait il s'agit à la base d'une structure qui possède, entre autre, un pointeur vers une liste chainée d'élément ... qui ont pour type cette même structure !

struct chlist_element
{
  chlist_element *next;
  node *data;
};

struct node
{
  int x;
  int y;
  int value;
  chlist_element *head_row;
  chlist_element *head_col;
};


sachant que j'ai un tableau de X*Y node.

<----------------------------------------------->
On reconnait un bon developpeur au baobab qu'il a dans la main...
Messages postés
14975
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
25 février 2021
94
Dans ce cas là, on utilise la même classe.
struct A
{
int toto;
A *p_A;
};

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo