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++ -  `displayDate' undeclared (first use this function)
Forum - C/C++ - `displayDate' undeclared (first use this function)

Avatar
ElCobra91 (Normal User)
Newbie


Messaggi: 18
Iscritto: 22/08/2010

Segnala al moderatore
Postato alle 20:28
Giovedì, 26/08/2010
ciao a tutti,sono nuovo di questo forum.Ho da poco iniziato a studiare il c++ e ho un problema su un programmino per visualizzare la data,infatti quando vado a compilare il progetto(ho separato l'interfaccia dall'implementazione) con DEV c++ mi dice:
In function `int main()':
`displayDate' undeclared (first use this function)
  (Each undeclared identifier is reported only once for each function it appears in.)
  [Build Error]  [Orario.o] Error 1

ecco il codice,graziein anticipo per il vostro aiuto:

Codice sorgente - presumibilmente C++

  1. #include<iostream>
  2. #include "Date.h"
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.    
  8.     int Anno;
  9.     int Mese;
  10.     int Giorno;
  11.     cout<<"inserisci il giorno attuale"<<endl;
  12.     cin>> Giorno;
  13.     cout<<endl;
  14.     cout<<"inserisci il mese corrente"<<endl;
  15.     cin>>Mese;
  16.     cout<<endl;
  17.     cout<<"inserisci l'anno corrente"<<endl;
  18.     cin>>Anno;
  19.     cout<<endl;
  20.     cout<<endl;
  21.     Date dataGiorno( Giorno, Mese, Anno );//creo un oggetto dataGiorno da passare al costruttore
  22.    
  23.    
  24.     cout << "verifica dei numeri inseriti \n"  ;
  25.     cout << displayDate()<<endl ;
  26. }
  27.  
  28.  
  29.  
  30.  
  31.  
  32. #include<iostream>
  33. #include<string>
  34. using namespace std;
  35.  
  36. class Date
  37. {
  38.       public:
  39.        Date(int,int,int);
  40.        void setDate(int,int,int);
  41.        int getDayDate();
  42.        int getMonthDate();
  43.        int getYearDate();
  44.        void displayDate();
  45.      
  46.       private:
  47.               int year;
  48.               int month;
  49.               int day;
  50. };
  51.  
  52.  
  53.  
  54.  
  55.  
  56. #include<iostream>
  57. #include "Date.h"
  58. using namespace std;
  59.  
  60. Date::Date(int giorno, int mese, int anno)
  61. {
  62.                setDate(giorno, mese, anno);
  63.                }
  64.                
  65. void Date::setDate(int giorno, int mese, int anno)
  66. {
  67.      if (giorno > 31)
  68.      {
  69.      
  70.      
  71.                 cout << "Non esiste un mese con più di 31 giorni.Il giorno è impostato al primo del mese" << endl;
  72.                 giorno=1;
  73.                 giorno= day;
  74.                 }
  75.                
  76.                 if (mese > 12 )
  77.                 {
  78.                  
  79.                   cout << "Non esistono più di 12 mesi.Il mese è impostato per default all'1" << endl;
  80.                   mese=1;
  81.                   mese= month;
  82.                   }
  83.                    
  84.                     if (anno < 2010)
  85.                     {
  86.                      
  87.                         cout << "Siamo nel 2010, non vivere nel passato.L'anno è impostato per default a l 2011" << endl;
  88.                         anno=2011;
  89.                         anno=year;
  90.                         }
  91.                        
  92.                         giorno= day;
  93.                         mese=month;
  94.                         anno=year;
  95. }//fine setDate
  96.  
  97. int Date::getDayDate()
  98. {
  99.        return day;
  100.        
  101. }//fine getDate
  102.  
  103. int Date::getMonthDate()
  104. {
  105.        return month;
  106. }
  107. int Date::getYearDate()
  108. {
  109.        return year;
  110. }
  111. void Date::displayDate()
  112. {
  113.      cout<< " Oggi è il: \n" << getDayDate()<<"  "<< getMonthDate()<<"  "<<getYearDate()<<endl;
  114.      
  115. }//fine displayDate



EDIT by HeDo: Codice non racchiuso tra tag code!

Ultima modifica effettuata da HeDo il 26/08/2010 alle 21:11
PM
Avatar
nihal (Ex-Member)
Pro


Messaggi: 109
Iscritto: 12/04/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 20:41
Giovedì, 26/08/2010
Per invocare il metodo di un oggetto devi usare nomeOggetto.metodo()
Nel tuo codice:
Codice sorgente - presumibilmente Plain Text

  1. cout << dataGiorno.displayDate() << endl;



Chi lotta può perdere. Chi non lotta ha già perso...
PM
Avatar
ElCobra91 (Normal User)
Newbie


Messaggi: 18
Iscritto: 22/08/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 21:29
Giovedì, 26/08/2010
ho provato e non funziona, e poi come potrebbe funzionare? dataGiorno contiene gli argomenti da passare al costruttore e non alla funzione displayDate.
Cmq se provo a fare come hai detto mi dice:
  In function `int main()':
26  no match for 'operator<<' in 'std::cout << (&dataGiorno)->Date::displayDate()'
note C:\Dev-Cpp\include\c++\3.4.2\bits\ostream.tcc:63 candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>&(*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]


non capisco quale sia l'errore sul codice che ho scritto all'inizio.In pratica non riconosce la funzione,dice che noo è stata dichiarata ma io l'ho fatto...HELP!!!

PM
Avatar
nihal (Ex-Member)
Pro


Messaggi: 109
Iscritto: 12/04/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 21:33
Giovedì, 26/08/2010
Adesso che guardo bene il tuo codice noto che la displayDate() usa già cout, quindi non hai bisogno di usare cout << dataGiorno.displayDate() << endl; ma ti basta fare dataGiorno.displayDate();

Ultima modifica effettuata da nihal il 26/08/2010 alle 21:36


Chi lotta può perdere. Chi non lotta ha già perso...
PM
Avatar
ElCobra91 (Normal User)
Newbie


Messaggi: 18
Iscritto: 22/08/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 21:44
Giovedì, 26/08/2010
se scrivo solo dataGiorno.displayDate() me lo compila senza errori però qualunque numero inserisco per giorno mese e anno mi da sempre come risultato

giorno 0
mese 0
anno 1976021473


PM
Avatar
ElCobra91 (Normal User)
Newbie


Messaggi: 18
Iscritto: 22/08/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 22:14
Giovedì, 26/08/2010
trovati gli errori.
Quando dfinisco la funzione setDate ho fatto confusione con l'operatore di assegnamento =
perchè io avevo scritto giorno= day ecc ma il valore iniziale di day non lo ho, è il numero contenuto nella variabile giorno che deve essere assegnato a day.cmq grazie mille per l'aiuto.Ciaociao

PM
Avatar
nihal (Ex-Member)
Pro


Messaggi: 109
Iscritto: 12/04/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 22:17
Giovedì, 26/08/2010
Resta comunque il fatto che per invocare il metodo di un oggetto devi usare oggetto.metodo(), non come avevi fatto tu... Perchè il compilatore non sa se è una variabile o metodo o vattenapesca...


Chi lotta può perdere. Chi non lotta ha già perso...
PM
Avatar
ElCobra91 (Normal User)
Newbie


Messaggi: 18
Iscritto: 22/08/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 22:33
Giovedì, 26/08/2010
hai ragione, allora,tanto per vedere se ho capito, quando io creo l'oggetto dataGiorno(Giorno, Mese, Anno) i valori di Giorno Mese e Anno li passa al costruttore, poi io cmq per poter utilizzare una funzione della classe devo utilizzare sempre la forma oggetto.funzione() giusto?

PM
Avatar
nihal (Ex-Member)
Pro


Messaggi: 109
Iscritto: 12/04/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 13:51
Venerdì, 27/08/2010
Praticamente tu hai creato una data (oggetto di tipo Date), con determinati giorno, mese e anno. Quindi, per poter mostrare la data a schermo, devi invocare il metodo displayDate() relativo a QUELL\'oggetto data...


Chi lotta può perdere. Chi non lotta ha già perso...
PM