Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - errore: Dereferencing pointer to incomplete type
Forum - C/C++ - errore: Dereferencing pointer to incomplete type

Avatar
dita94 (Normal User)
Newbie


Messaggi: 3
Iscritto: 05/05/2009

Segnala al moderatore
Postato alle 23:10
Mercoledì, 12/11/2014
Questo topic è stato chiuso dal moderatore

Salve a tutti, sto svolgendo un esercizio per l'università e sono incappato in un errore che proprio non capisco.

In poche parole devo creare un programma con menù che mi permetta di gestire una lista di studenti.

Il file progetto è composto da più sorgenti, vi posterò solo le parti che credo siano interessate.

FILE lista.h
Codice sorgente - presumibilmente C++

  1. #ifndef LIST_H_DEFINED
  2. #define LIST_H_DEFINED
  3.  
  4. typedef struct nodolista* link;
  5. typedef struct lista* Lista;
  6.  
  7. ...prototipi funzioni...
  8. #endif



FILE lista.c
Codice sorgente - presumibilmente C++

  1. #include "item.h"
  2. #include "lista.h"
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <string.h>
  6.  
  7. struct nodolista
  8. {
  9.     Item item; //guardare item.h e item.c
  10.     link next;
  11.     link prev;
  12. };
  13.  
  14. struct lista
  15. {
  16.     link primo;
  17.     link ultimo;
  18.     int n;
  19. };
  20.  
  21. //...........varie funzioni............
  22.  
  23. void ricercaestampa(Lista l, char *s, int n)
  24. {
  25.     int trovati = 0;
  26.     link tmp;
  27.  
  28.     for(tmp=l->primo; tmp!=NULL; tmp=tmp->next)
  29.     {
  30.         if(n == 1)
  31.         {
  32.             if(strcmp(s, tmp->item->nome) == 0) //ERRORE QUI( E ANCHE NELLA PRINTF IN BASSO
  33.             {
  34.                 printf("NOME: %s\nCOGNOME: %s\nMATRICOLA: %s\nCREDITI:%d\nMEDIA VOTI: %.2f\n\n",
  35.                 tmp->item->nome, tmp->item->cognome, tmp->item->matricola,
  36.                 tmp->item->carriera.crediti, tmp->item->carriera.media);
  37.  
  38.                 trovati = 1;
  39.             }




FILE item.h
Codice sorgente - presumibilmente C++

  1. #ifndef ITEM_H_DEFINED
  2. #define ITEM_H_DEFINED
  3.  
  4. #define MAX_STR 36
  5.  
  6. typedef struct studente* Item;
  7.  
  8. Item nuovoitem();
  9.  
  10. #endif



FILE item.c
Codice sorgente - presumibilmente C++

  1. #include "item.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. struct carriera
  7. {
  8.     int crediti;
  9.     float media;
  10. };
  11.  
  12. struct studente
  13. {
  14.     char *nome;
  15.     char *cognome;
  16.     char *matricola;
  17.     struct carriera carriera;
  18. };
  19.  
  20. //...



Il compilatore mi restituisce l'errore del titolo nel file item.c 26 volte! ogni volta che provo ad accedere a i dati di struct studente(Item) con tmp->item->nome(oppure cognome/matricola/....)

Ringrazio in anticipo ogni eventuale aiuto!

p.s Credo che l'errore sia in queste parti di codice ma se così non fosse, chiedete per altre parti!

Ultima modifica effettuata da dita94 il 12/11/2014 alle 23:11
PM
Avatar
dita94 (Normal User)
Newbie


Messaggi: 3
Iscritto: 05/05/2009

Segnala al moderatore
Postato alle 0:53
Giovedì, 13/11/2014
Sti c***i... Dopo 2 ore mi accorgo che ho messo male uno spazio....

lista.h
Codice sorgente - presumibilmente C++

  1. #ifndef LIST_H_DEFINED
  2. #define LIST_H_DEFINED
  3.  
  4. [b]
  5. typedef struct nodolista *Link; //mettevo l'asterisco subito dopo "nodolista" e "lista"
  6. typedef struct lista *Lista;
  7. [/b]



Che amarezza...

Spero sia di aiuto a qualcun altro in futuro almeno...

PM