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++ - classi bisogno di certezze
Forum - C/C++ - classi bisogno di certezze

Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 19:15
Giovedì, 04/06/2009
Codice sorgente - presumibilmente C++

  1. class  macchina
  2. {
  3. public:
  4.    char marca;
  5.    char modello;
  6.    int litri;
  7.    int serbatoio;
  8.    int km;
  9.  
  10.    public macchina(marca,modello)
  11.    {
  12.            cout<<"ciao sono un costruttore";
  13.            cout<<"la macchina è "<<modello<<"con marca "<<marca;
  14.    }
  15.    public macchina(litri)
  16.    {   cout<<"ciao sono un costruttore";
  17.            cout<<"la macchina può contenere"<< litri<<"di benzina";
  18.    }
  19.    public macchina(serbatoio)
  20.    {
  21.            cout<<"ciao sn un costruttore";
  22.            if(serbatoio==litri)
  23.            {
  24.              cout<<"il serbatoio è pieno";
  25.            }
  26.            else if(serbatoio<litri)
  27.            {
  28.                    cout<<"il serbatoio è pieno";
  29.            }
  30.    }
  31.            
  32.            percorri(km)
  33. }
  34. #include "stdafx.h"
  35. #include <iostream>
  36. using namespace std;
  37. void main()
  38. {
  39.         cout<<"inserisci la marca";
  40.         cin>marca;
  41.         cout<<"inserisci il modello";
  42.         cin>> modello;
  43.         macchina(marca,modello);
  44.         cout<<"inserisci i litri di un pieno!";
  45.         cin>>litri;
  46.         macchina(litri);
  47.         cout<<"inserisci litri nel serbatoio!";
  48.         cin>>serbatoio;
  49.         macchina(serbatoio);
  50. }




ciao a tyutti ho bisogno di un favore nn mi funziona il compilatore non è che siete in grado di dirmi se questo programma funziona???e se cè dove è l'errore??

grazie a tutti


matteog
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 19:29
Giovedì, 04/06/2009
così solo ad occhio direi che ci sono alcuni errori:

il più grave è che le variabili interne alla classe (attributi) devono essere per il 99.9% delle volte dichiarati come private altrimenti decade il meccanismo delle classi

poi:

1)le classi devono essere racchiuse tra parentesi graffe e devi mettere ; alla fine
quindi:

Codice sorgente - presumibilmente C++

  1. class  macchina
  2. {
  3. private:
  4.    char marca;
  5.    char modello;
  6.    int litri;
  7.    int serbatoio;
  8.    int km;
  9. };



2) dentro alla classe devi mettere solo i prototipi dei metodi a meno che questi siano inline.
Comunque devi metterne lo sviluppo fuori dalla classe
quindi:
Codice sorgente - presumibilmente C++

  1. class  macchina
  2. {
  3. private:
  4.    char marca;
  5.    char modello;
  6.    int litri;
  7.    int serbatoio;
  8.    int km;
  9. public:
  10.    macchina(char ma,char mo);
  11.    macchina(int lt);
  12.    macchina(int serb);
  13. };
  14.  
  15. macchina::macchina(char ma, char mo)
  16. {
  17.    ....
  18. }



e così per tutti i metodi

3) quel percorri(km) non so cosa sia ma non è ne un metodo ne un attributo
4) la classe si instanzia così:
Codice sorgente - presumibilmente Plain Text

  1. macchina m1(marca, modello);



e i suoi metodi pubblici si richiamano con
Codice sorgente - presumibilmente Plain Text

  1. m1.nomemetodo(....);



5)ovviemente nel main devi dichiarare le varibili
char marca;
char modello;
questo mi sembra ovvio

ATTENTO che i costruttori vengono chiamati in automatico, non puoi chiamarli tu a mano.
Il costruttore viene chiamato quando fai macchina m1(marca, modello)

in totale: ma hai letto un manuale sulle classi?


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 19:46
Giovedì, 04/06/2009
ciao no sn alle prime armi con le classi senti una cosa ma nel main quando richiamoi costruttori così:
Codice sorgente - presumibilmente C++

  1. class  macchina
  2. {
  3. private:
  4.    char marca;
  5.    char modello;
  6.    int litri;
  7.    int serbatoio;
  8.    int km;
  9.  public:
  10.    macchina(char marca,char modello);
  11.    macchina(int litri);
  12.    macchina(int serbatoio);
  13. };
  14. macchina::macchina(char marca, char modello)
  15. {
  16.    cout<<"ciao sono un costruttore";
  17.    cout<<"la macchina è "<<modello<<"con marca "<<marca;
  18. }
  19. macchina::macchina(litri)
  20. {  
  21.            cout<<"ciao sono un costruttore";
  22.            cout<<"la macchina può contenere"<< litri<<"di benzina";
  23. }
  24.  
  25. macchina::macchina(serbatoio)
  26. {
  27.            cout<<"ciao sn un costruttore";
  28.            if(serbatoio==litri)
  29.            {
  30.              cout<<"il serbatoio è pieno";
  31.            }
  32.            else if(serbatoio<litri)
  33.            {
  34.                    cout<<"il serbatoio è pieno";
  35.            }
  36. }
  37. #include "stdafx.h"
  38. void main()
  39. {
  40.    
  41. char marca[15],modello[15];
  42. cout<"inserisci marca!";
  43. cin>>marca;
  44. cout<<"inserisci modello";
  45. cin>>modello;
  46. macchina m1(marca, modello); //qui va bn così o sennò come devo fare per passargli i valori della marca e dell modello??e quell'm1 cosa è??



matteog
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 20:10
Giovedì, 04/06/2009
senti non posso spiegarti le classi così per così...devi avere almeno le basi sulle quali poter lavorare

inoltre hai carenze anche nel c/c++ base....se dichiari variabili char come parametri di funzione non puoi pretendere che accettino dei char[15]

e poi nelle funzioni ogni parametro deve essere sempre preceduto dal suo tipo, non puoi scrivere (litri) senza dire che cos'é litri.

comprati un bel manuale sul c++, studiatelo e quando avrai finito ne riparleremo se ce ne sarà davvero bisogno

Ultima modifica effettuata da lorenzo il 04/06/2009 alle 20:11


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
matteog (Normal User)
Pro


Messaggi: 149
Iscritto: 10/04/2009

Segnala al moderatore
Postato alle 20:33
Giovedì, 04/06/2009
complimenti molto cortese


matteog
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 21:15
Giovedì, 04/06/2009
non mi sembra di aver detto cose così maleducate
è come se io andassi da un pilota e gli chiedessi di spiegarmi come funziona un aereo...può dirmelo in modo generale ma poi sono io che devo studiare le cose dai libri

la programmazione ad oggetti è un argomento troppo complesso per essere spiegato in un forum, non per nulla esistono libroni sull'argomento e la si studia per almeno un anno a scuola

il mio era un consiglio dato in buona fede: studia la teoria e il linguaggio alla quale vuoi applicarla(in questo caso il c++) e vedrai che non avrai nemmeno bisogno di fare domande su questi argomenti perché li saprai bene

ma devi prendere un manuale e studiarlo altrimenti andando a tentoni non capirai niente


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote