Oppure

Loading
04/06/09 17:15
matteog



class  macchina
{
public:
   char marca;
   char modello;
   int litri;
   int serbatoio;
   int km;

   public macchina(marca,modello)
   {
	   cout<<"ciao sono un costruttore";
	   cout<<"la macchina è "<<modello<<"con marca "<<marca;
   }
   public macchina(litri)
   {   cout<<"ciao sono un costruttore";
	   cout<<"la macchina può contenere"<< litri<<"di benzina";
   }
   public macchina(serbatoio)
   {
	   cout<<"ciao sn un costruttore";
	   if(serbatoio==litri)
	   {
	     cout<<"il serbatoio è pieno";
	   }
	   else if(serbatoio<litri)
	   {
		   cout<<"il serbatoio è pieno";
	   }
   }
	   
	   percorri(km)
}
#include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{ 
	cout<<"inserisci la marca";
	cin>marca;
	cout<<"inserisci il modello";
	cin>> modello;
	macchina(marca,modello);
	cout<<"inserisci i litri di un pieno!";
	cin>>litri;
	macchina(litri);
	cout<<"inserisci litri nel serbatoio!";
	cin>>serbatoio;
	macchina(serbatoio);
}




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
aaa
04/06/09 17:29
lorenzo
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:

class  macchina 
{ 
private: 
   char marca; 
   char modello; 
   int litri; 
   int serbatoio; 
   int km;
};


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:
class  macchina 
{ 
private: 
   char marca; 
   char modello; 
   int litri; 
   int serbatoio; 
   int km;
public:
   macchina(char ma,char mo);
   macchina(int lt);
   macchina(int serb);
};

macchina::macchina(char ma, char mo)
{
   ....
}


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ì:
macchina m1(marca, modello);


e i suoi metodi pubblici si richiamano con
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?
aaa
04/06/09 17:46
matteog
ciao no sn alle prime armi con le classi senti una cosa ma nel main quando richiamoi costruttori così:
class  macchina 
{ 
private: 
   char marca; 
   char modello; 
   int litri; 
   int serbatoio; 
   int km; 
 public: 
   macchina(char marca,char modello); 
   macchina(int litri); 
   macchina(int serbatoio); 
}; 
macchina::macchina(char marca, char modello) 
{ 
   cout<<"ciao sono un costruttore";
   cout<<"la macchina è "<<modello<<"con marca "<<marca;
} 
macchina::macchina(litri)
{  
	   cout<<"ciao sono un costruttore";
	   cout<<"la macchina può contenere"<< litri<<"di benzina";
}
 
macchina::macchina(serbatoio)
{
	   cout<<"ciao sn un costruttore";
	   if(serbatoio==litri)
	   {
	     cout<<"il serbatoio è pieno";
	   }
	   else if(serbatoio<litri)
	   {
		   cout<<"il serbatoio è pieno";
	   }
}
#include "stdafx.h"
void main()
{
   
char marca[15],modello[15];
cout<"inserisci marca!";
cin>>marca;
cout<<"inserisci modello";
cin>>modello;
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 è??






aaa
04/06/09 18:10
lorenzo
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 04/06/09 18:11
aaa
04/06/09 18:33
matteog
complimenti molto cortese
aaa
04/06/09 19:15
lorenzo
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
aaa