Salve, mi sto accingendo per la prima volta a svolgere un esercizio in cui bisogna creare una classe e lavorare sugli oggetti di tale classe.
Il codice che ho creato è il seguente : http://pastebin.com/SCHJKVPg (il testo è già formattato in stile C + + , quindi non dovreste aver problemi a leggere il codice) .
Il problema è il seguente : nell'implementazione (nel body) della funzione
codice:
void insert_message(char*,char*);
io vorrei mettere la precondizione che se lunghezza della stringa inserita dall'utente supera quella della dimensione massima della fenditura del thinking cap => mi dà errore e mi fa reinserire le stringhe , altresì procede a copiare nelle fendiuture che sono :
codice:
char *green; char *red;
le stringhe inserite dall'utente. Ora se io implemento così la funzione
:
codice:
void Thinking_Cap::insert_message(char *verde,char *rosso){ verde = new char[*a];
rosso = new char[*b];
cout<<*a<<endl;
cout<<*b<<endl;
do{
cout<<"Inserisci Il Messaggio per lo slot verde\n";
cin>>verde;
cout<<"Inserisci Il Messaggio per lo slot rosso\n";
cin>>rosso;
if(strlen(verde)>*a & strlen(rosso)>*b){
cout<<"Il messaggio e'troppo lungo in relazione alle dimensioni della fenditura del Cap\nPrego Reinserire un messaggio piu' breve\nSi ricorda che la dimensione della fenditura rossa e':"<<strlen(green)<<endl<<"La dimensione della fenditura verde e':"<<strlen(red)<<endl;
}
else{
green=verde;
red=rosso;
}
}while(strlen(verde)>strlen(green) & strlen(rosso)>strlen(red));
}
Mi stampa a schermo che "*a" = 0 e "*b" = 0 quando dovrebbero essere 4 per il costruttore di default. Se però elimino il do-while :
codice:
void Thinking_Cap::insert_message(char *verde,char *rosso){ verde = new char[*a];
rosso = new char[*b];
cout<<*a<<endl;
cout<<*b<<endl;
}
così mi dice che *a e *b sono pari a 4, come è possibile?
Grazie anticipatamente