IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

2 structures se pointant mutuellement


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 96
    Par défaut 2 structures se pointant mutuellement
    Bonsoir tlm.

    J'ai 2 strucures :

    1. structure parent
    2. structure enfant


    Dans structure parent jai un pointeurs vers enfants.

    et dans enfant, je voudrais pouvoir avoir un pointeur vers son parent.

    voici un extrait de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    // Case structure
    typedef struct  {
        Sokoban_Stage* stage;
        int x;
        int y;
    } Sokoban_Stage_Case;
     
    typedef struct Sokoban_Stage Sokoban_Stage;
    struct Sokoban_Stage  {
            /*variable de bases*/
            int isBuilt;
            int nbOfCase;
            int nbOfRow;
            int nbOfCol;
            int ** casesIndex;
     
            /* pointeur dobjets*/
            Sokoban_Stage_Case* cases;
     
            /* mes pointeurs de foncstions*/
            void *(*build)(Sokoban_Stage*);
            void *(*free)(Sokoban_Stage*);
            Sokoban_Stage_Case* *(*getCase)(Sokoban_Stage*,int,int);
    };
    Le problème vient de Sokoban_Stage*; qui est a l'interieur de ma structure Sokoban_Stage_Case;

    comme Sokoban_Stage n'est pas encore défini, ca ne marche pas. et si j'inverse les 2 structures, c'est au tour de Sokoban_Stage_Case* cases;, dans la strucure Sokoban_Stage

    Il y a t'il un moyen d'arriver au résultat que je veux?

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Par défaut
    salut,

    essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct  {
        struct Sokoban_Stage* stage;
        int x;
        int y;
    } Sokoban_Stage_Case;

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Modifier l'ordre des déclarations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    typedef struct Sokoban_Stage Sokoban_Stage;
     
    typedef struct  {
        Sokoban_Stage* stage;
    ....
    } Sokoban_Stage_Case;
     
    struct Sokoban_Stage  {
    .... 
            /* pointeur dobjets*/
            Sokoban_Stage_Case* cases;
     
            /* mes pointeurs de foncstions*/
            void *(*build)(Sokoban_Stage*);
            void *(*free)(Sokoban_Stage*);
            Sokoban_Stage_Case* *(*getCase)(Sokoban_Stage*,int,int);
    };

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 96
    Par défaut
    Merci pour vos reponses :

    Mala92
    Ouais ca marche super bien! mais pourquoi? cest comme si au moment ou le compilateur li cette structure, cest comme si il na pas access au typedev de Sokoban_Stage ? alors pkoi a til access a struct Sokoban_Stage.

    Diogene
    Malheureusement jai le meme probleme quand je les inverses, maintenant au lieux detre Sokoban_Stage* quil ne trouve pas cest Sokoban_Stage_Case*

  5. #5
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Malheureusement jai le meme probleme quand je les inverses, maintenant au lieux detre Sokoban_Stage* quil ne trouve pas cest Sokoban_Stage_Case*
    Il ne s'agit pas d'inverser les déclaration des structures, mais de déplacer la déclaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef struct Sokoban_Stage Sokoban_Stage;
    pout la mettre en tête.

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Par défaut
    Citation Envoyé par nault Voir le message
    Diogene
    Malheureusement jai le meme probleme quand je les inverses, maintenant au lieux detre Sokoban_Stage* quil ne trouve pas cest Sokoban_Stage_Case*
    Ca marche très bien! C'est même plus propre.
    Fait gaffe à l'ordre et aux terminologie struct et typedef struct.

Discussions similaires

  1. appel mutuel entre classe et structure
    Par allbundy dans le forum Débuter
    Réponses: 8
    Dernier message: 07/04/2014, 12h14
  2. deux structures pointant l'une sur l'autre
    Par mebibyte dans le forum Débuter
    Réponses: 3
    Dernier message: 23/03/2010, 09h43
  3. tableau de pointeur pointant sur des structures.
    Par sandball22 dans le forum C
    Réponses: 10
    Dernier message: 19/08/2009, 20h15
  4. Références mutuelles dans les structures
    Par Kicker dans le forum Débuter
    Réponses: 2
    Dernier message: 10/07/2009, 13h38
  5. Réponses: 2
    Dernier message: 16/09/2007, 19h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo