Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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

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?

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 è??


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
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

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

PM Quote