Questa:
codice:
typedef char* STRING;
non è una ASCIIZ string: è un petardo che scoppia in mano.
Non cavillo troppo sul resto, ma prima impari a usare std::string e prima non ripeterai questi errori.
Questa
codice:
#define LEN 32
char nome_esame[LEN];
è una ASCIIZ String.
codice:
class Esame{
private:
int voto,cfu;
char nome[LEN];
public:
Esame();
void inserisciNome(const char* n, int len);
void inserisciVoto(int );
void inserisciCfu(int);
int getVoto()const;
int getCfu()const;
const char* getNome(STRING)const;
void stampaTutto();
};
Esame::Esame(){
voto=0;
cfu=0;
nome=0; // o memset(nome,0,LEN);
}
void Esame::inserisciVoto(int voto1){ voto=voto1 ; }
void Esame::inserisciCfu(int cfu1){ cfu=cfu1;}
void Esame::inserisciNome(const char* nm, int len) {
strncpy(nome,nm,len);
}
int Esame::getVoto()const{ return voto;}
int Esame::getCfu()const{ return cfu;}
const char*Esame::getNome()const{ return nome;}
void Esame::stampaTutto(){
cout<<"il voto è: "<<voto<<" il cfu è : "<<cfu<<endl;
}
int main (){
Esame e;
char nome[LEN];
cout<<"\n inserisci nome: "<<endl;
cin.getline(nome,len);
e.inserisciNome(nome,LEN);
cout << e.getNome() << endl;