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 funzioneio 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:void insert_message(char*,char*);le stringhe inserite dall'utente. Ora se io implemento così la funzionecodice:char *green; char *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; 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)); }
così mi dice che *a e *b sono pari a 4, come è possibile?codice:void Thinking_Cap::insert_message(char *verde,char *rosso){ verde = new char[*a]; rosso = new char[*b]; cout<<*a<<endl; cout<<*b<<endl; }
Grazie anticipatamente![]()

Rispondi quotando
