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 :

dereferencing pointer to incomplete type


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 145
    Par défaut dereferencing pointer to incomplete type
    Bonjour,

    J'essaie de créer une fonction de recherche dans un arbre binaire qui renvoie l'adresse du noeud rechercher mais j'ai l'erreur "dereferencing pointer to incomplete type" aux lignes 5,9,10,12

    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
    struct noeud* recher(struct noeud *racine, char *title)
    {
        while(racine != NULL)
        {
            if((strcmp(racine->fi.titre, title)) == 0)
                return racine;
            else
            {        
                if((strcmp(racine->fi.titre, title)) == 1) //si la fonction strcmp renvoi 1 (alphabétiquement supérieur)
                    racine = racine->fg;
                else
                    racine = racine->fd;
            }
        }
        return NULL;
    }
    A quoi cela peut il être dû ?

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Peux-tu nous montrer ta structure noeud?

    Sinon tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef struct
    {
            int machin;
            char * truc;
    } Noeud;
    Pour pouvoir l'utiliser comme ceci :

    C'est déjà plus pratique.

  3. #3
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Salut,

    Donne nous la déclaration de ta structure et les appels à recherche.

  4. #4
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 145
    Par défaut
    Merci pour vos réponses .

    Voici mes structures

    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
        struct personne
        {
            char nom[31];//nom de la personne (30 caractère max)
            char prenom[31];//prénom de la personne (30 caractère max)
            char nationalite[41];//nationalité de la personne (40 caractère max)
        };
     
        struct film
        {
            char titre[51];//titre du film (50 caractère max)
            struct personne realisateur;//réalisateur du film
            struct personne *liste;//tableau dynamique de personnes (acteurs)
            int nbr;//nombre d'acteur dans le film
            float budget;//budget du film
            int an;//année de réalisation du film
        };
     
        struct noeud//arbre binaire
        {
            struct film fi;
            struct noeud *fg;//pointe vers le fils gauche
            struct noeud *fd;//pointe vers le fils droit
        };
    Pour l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    struct noeud *test;
    test = recher(racine,"TERMINATOR 2");

  5. #5
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Est-ce que tu as bien définis tes structures entièrement dans ton .c ou dans le .h associé à ton .c ou est-ce que tu as juste mis :
    ?

  6. #6
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 145
    Par défaut
    Mes structure sont déclarée comme indiquée le post au-dessus dans un .h

    et pour toutes les autres fonction je n'ai aucun soucis,

    par exemple ces deux fonctions n'ont aucun soucis :

    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
    26
    27
    28
    void recher1(struct noeud *racine,char *title)
    {          
        while((strcmp(racine->fi.titre, title)) != 0)//si le titre donné n'est pas égal à celui de racine
        {    
            if((strcmp(racine->fi.titre, title)) == 1) //si la fonction strcmp renvoi 1 (alphabétiquement supérieur)
                racine = racine->fg;
            else
                racine = racine->fd;       
        }
        affich_film(racine->fi);   
    }
     
    int recher2(struct noeud *racine, char *title)
    {
        while(racine != NULL)
        {
            if((strcmp(racine->fi.titre, title)) == 0)
                return 1;
            else
            {        
                if((strcmp(racine->fi.titre, title)) == 1) //si la fonction strcmp renvoi 1 (alphabétiquement supérieur)
                    racine = racine->fg;
                else
                    racine = racine->fd;
            }
        }
        return 0;
    }

  7. #7
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 145
    Par défaut
    J'ai trouvé la solution, mais je ne sais pas pourquoi ça coince..

    J'ai les fichiers :

    fonctions_autre.h
    fonctions_film.h
    fonctions_autre.c
    fonctions_film.c
    main.c

    Tout les include sont correct

    Mes structures sont déclarées dans fonctions_film.h

    Mes fonction recher1 et recher2 sont dans fonctions_film.c et pas de souci.

    La fonction recher est dans fonctions_autre.c et là ça bloque, pourtant j'ai bien #include "fonctions_film.h"

    Je ne comprends pas...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. error: dereferencing pointer to incomplete type
    Par rufa11 dans le forum Réseau
    Réponses: 2
    Dernier message: 11/02/2015, 09h41
  2. Réponses: 7
    Dernier message: 07/04/2014, 23h40
  3. error: dereferencing pointer to incomplete type
    Par Amnael dans le forum Débuter
    Réponses: 15
    Dernier message: 16/03/2014, 23h26
  4. dereferencing pointer to incomplete type
    Par Anasiben dans le forum Débuter
    Réponses: 3
    Dernier message: 19/05/2011, 16h39
  5. dereferencing pointer to incomplete type
    Par Newgaia dans le forum Débuter
    Réponses: 2
    Dernier message: 19/04/2009, 19h00

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