|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | ||||||||||
|
Member
Iscritto dal: Apr 2007
Città: Provincia di Udine
Messaggi: 88
|
[C++] OOP, non mi riconosce gli oggetti
Salve a tutti ragazzi, avrei un esercizio da fare per le vacanze.
Praticamente è da scrivere un programma in C++ che sia in grado di gestire un magazzino, facendo uso delle liste (quindi sia dichiarazione di un classe Nodo, e di una classe Lista). Il problema è che, in base a come faccio gli include dei due file *.h mi da errori diversi. Vi posto il codice che ho scritto fino ad adesso. Classe Nodo
Classe Lista
Metodi Nodo
Metodi Lista
Main
Per scrivere, compilare ed eseguire il codice uso Netbeans 6.5. |
||||||||||
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2009
Città: Bologna
Messaggi: 1174
|
Se magari posti anche gli errori che ottieni dalla compilazione... cosi' ci si focalizza su quelli... senza dover scorrere tutto il codice, che non sono proprio 2 righe quelle che hai postato ...
Anche se nel file "classe lista"... c'andrebbe una dichiarazione... class Nodo; ... prima della classe Lista Ultima modifica di BrutPitt : 11-04-2009 alle 10:56. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Apr 2007
Città: Provincia di Udine
Messaggi: 88
|
Allora, se nell' implementazione dei metodi della classe Lista scrivo:
Codice:
#include "Lista.h" #include "Nodo.h" Codice:
In file included from metodiLista.cpp:1: Lista.h:15: error: ISO C++ forbids declaration of `Nodo' with no type Lista.h:15: error: expected `;' before '*' token metodiLista.cpp: In constructor `Lista::Lista()': metodiLista.cpp:8: error: `testa' undeclared (first use this function) metodiLista.cpp:8: error: (Each undeclared identifier is reported only once for each function it appears in.) metodiLista.cpp: In member function `void Lista::visualizza()': metodiLista.cpp:16: error: `testa' undeclared (first use this function) metodiLista.cpp: In member function `bool Lista::elimina(char*)': metodiLista.cpp:34: error: `testa' undeclared (first use this function) metodiLista.cpp: In member function `bool Lista::inserisci(char*, int)': metodiLista.cpp:72: error: `testa' undeclared (first use this function) metodiLista.cpp: In member function `bool Lista::ricercaArticolo(char*)': metodiLista.cpp:97: error: `testa' undeclared (first use this function) C:\Dev-Cpp\bin\make.exe: *** [build/Debug/Cygwin-Windows/metodiLista.o] Error 1 Codice:
#include "Nodo.h" #include "Lista.h" Codice:
In file included from main.cpp:9: Lista.h:15: error: ISO C++ forbids declaration of `Nodo' with no type Lista.h:15: error: expected `;' before '*' token main.cpp: In function `int main()': main.cpp:27: error: assignment of function `Lista mag_uno()' main.cpp:27: error: cannot convert `Lista*' to `Lista ()()' in assignment main.cpp:28: error: assignment of function `Lista mag_due()' main.cpp:28: error: cannot convert `Lista*' to `Lista ()()' in assignment main.cpp:52: error: request for member `inserisci' in `mag_uno', which is of non-class type `Lista ()()' main.cpp:59: error: request for member `inserisci' in `mag_due', which is of non-class type `Lista ()()' main.cpp:66: error: request for member `elimina' in `mag_uno', which is of non-class type `Lista ()()' main.cpp:73: error: request for member `elimina' in `mag_due', which is of non-class type `Lista ()()' main.cpp:76: error: request for member `visualizza' in `mag_uno', which is of non-class type `Lista ()()' main.cpp:79: error: request for member `visualizza' in `mag_due', which is of non-class type `Lista ()()' main.cpp:84: error: request for member `ricercaArticolo' in `mag_uno', which is of non-class type `Lista ()()' main.cpp:92: error: request for member `ricercaArticolo' in `mag_due', which is of non-class type `Lista ()()' make.exe[2]: *** [build/Debug/Cygwin-Windows/main.o] Error 1 |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Devi includere Nodo.h in Lista.h non in Lista.cpp
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2009
Città: Bologna
Messaggi: 1174
|
Nel primo gruppo di errori il problema e' la sequenza degli include
Nel secondo gruppo di errori... UN problema e' sicuramente qui: Codice:
Lista mag_uno();
Lista mag_due();
mag_uno=new Lista();
mag_due=new Lista();
Lista *mag_uno = new Lista; Lista *mag_due = new Lista; (per liberare la memoria... "delete") O alternativamente basta solo: Lista mag_uno; Lista mag_due; ma poi devi usare l'operatore "." al posto dell'operatore "->" Per quanto riguarda gli include, invece, o metti la dichiarazione in list.h: class Node; e includi entrambi i .h nei files main.cpp e list.cpp (come scrivevo... e a quel punto l'ordine non ha piu' importanza) Oppure inserisci in list.h: #include <node.h> e includi solo list.h nei files main.cpp e list.cpp Ultima modifica di BrutPitt : 12-04-2009 alle 12:59. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:07.



















