PDA

Visualizza la versione completa : [c++] non riesco a far compilare


p4sko
19-10-2012, 20:55
Buonasera, premetto che dopo 5 anni ho dovuto riprendere la programmazione in c++ e non ricordo mooolte cose..mi devo incentrare sulla programmazione a oggetti quindi implementazione di classi e stasera ho dei problemi con questo programma in quanto non riesco a capire cosa sbaglio...(x farlo ho dovuto prendere aiuti di qua e di la su internet e da quello che ricordo dovrebbe essere quasi corretto) chiedo una vostra consulenza:



#include <iostream>
#include <string>
using namespace std;

class StudUniv{
private:
string nome, cognome;
private:
char* matricola;

public:
StudUniv (string nome, string cognome){
nome=nome;
cognome=cognome;
}

public:
StudUniv (string nome, string cognome, char* m){
nome=nome;
cognome=cognome;
matricola=m;
}
public:
string legginome(){
return nome;
}
public:
string leggicognome(){
return cognome;
}
public:
string leggimatricola(){
return matricola;
}
public:
void aggmatricola(char* m){
if (matricola==0)
matricola=m;
}
public:
string info(){
return cognome+" "+nome+"(matr."+matricola+")";
}
class StudUnivTest{
public:
static void main (){
StudUniv s1=StudUniv("Antonio", "Bello", "82181");
StudUniv s2=StudUniv("Giovanna", "Bella");
cout<<(s1.info())<<endl;
cout<<(s2.info())<<endl;
StudUniv s2.matricola(82182);
cout<<"Dopo l'aggiornamento della matricola: "<<endl;
cout<<(s2.info());
system ("pause");
return 0;
}
}


LOG ERRORI:


56: error: expected primary-expression before "s2"
56: error: expected `;' before "s2"
60: error: return-statement with a value, in function returning 'void'
60: At global scope:
61: error: expected unqualified-id at end of input
61: error: expected `,' or `;' at end of input
62: error: expected unqualified-id at end of input
62: error: expected `}' at end of input
62: In static member function `static void StudUniv::StudUnivTest::main()':

visto che ricordo molto poco e ho urgente bisogno di questi esempi da portare ad un professore, chiedo a voi! Grazie anticipate della disponibilità e vi prego, non andate tnt pesante con gli insulti! :malol:

shodan
19-10-2012, 23:29
La prossima volta usa i tag code per identare il codice, altrimenti non si capisce niente.

L'errore che fai è proprio di fondo: in C++ non esiste niente del genere:


class StudUnivTest{
public:
static void main (){
StudUniv s1=StudUniv("Antonio", "Bello", "82181");
StudUniv s2=StudUniv("Giovanna", "Bella");
cout<<(s1.info())<<endl;
cout<<(s2.info())<<endl;
StudUniv s2.matricola(82182);
cout<<"Dopo l'aggiornamento della matricola: "<<endl;
cout<<(s2.info());
system ("pause");
return 0;
}
}

Esiste semmai:


int main (int argc, char* argv[] ) {
StudUniv s1("Antonio", "Bello", "82181");
StudUniv s2("Giovanna", "Bella");
cout<<(s1.info())<<endl;
cout<<(s2.info())<<endl;
StudUniv s2.matricola(82182);
cout<<"Dopo l'aggiornamento della matricola: "<<endl;
cout<<(s2.info());
system ("pause");
return 0;
}

Poi questo è sballato in pieno:


StudUniv s2.matricola(82182);

1) perché quel numero dev'essere una stringa;
2) perché quel metodo non esiste;
3) perché il metodo aggMatricola(char*) non restituisce niente;

MacApp
20-10-2012, 19:44
e non dimenticare il ";" alla chiusura della graffa della classe


class StudUnivTest{
...
};

;-)

p4sko
20-10-2012, 21:12
quindi come dovrei modificare StudUniv s2.matricola? chiedo scusa x il tag, mi sn dimenticato!!

shodan
20-10-2012, 21:50
E' sufficiente:


s2.aggmatricola("82182");

Loading