Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problemino con classe in c++...
Forum - C/C++ - Problemino con classe in c++...

Avatar
luca94 (Normal User)
Pro


Messaggi: 71
Iscritto: 07/05/2008

Segnala al moderatore
Postato alle 14:22
Martedì, 05/05/2009
Ciao a tutti,
il mio problema potrebbe sembrare stupido per molti di voi ma purtroppo sono ancora all' inizio con il c++.
Il problema è questo...ho creato un header file con una classe dove c'è scritto questo:
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. using namespace std;
  3. class classe
  4. {
  5. public:
  6.              void strlung(char stringa[500], int lung)
  7.              {
  8.                
  9.                 lung=0;  
  10.                 char* punt;
  11.                 punt = & stringa[0];    
  12.                 do
  13.                 {
  14.                     punt++;
  15.                     lung++;
  16.                 }
  17.                 while(*punt != NULL);
  18.                 }
  19. };


Praticamente assegna alla variabile lung la lungeza della stringa.
Nel file cpp utilizzo la classe così:
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include "file_creato_da_me.h"
  3. using namespace std;
  4. int main()
  5. {
  6.     char stringa[500];
  7.     int lol;
  8.     cout << "Insert stringa" << endl;
  9.     cin >> stringa;
  10.     classe ogetto;
  11.     ogetto.strlung(stringa, lol);
  12.     cout << lol << endl;
  13.     system("pause>nul");
  14. }


Il programma dovrebbe assegnare alla variabile "lol" la lunghezza della stringa, ma invece assegna un valore tipo "40324". Come mai?
Grazie a tutti!!:k:

Ultima modifica effettuata da luca94 il 05/05/2009 alle 14:23
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 14:30
Martedì, 05/05/2009
Dato che la variabile che conterra' la lunghezza deve essere variata all'interno della funzione membro della classe, allora la devi passare per reference.

Quindi deve essere

void strlung(char stringa[500], int& lung)

Ultima modifica effettuata da theprogrammer il 05/05/2009 alle 14:30
PM Quote
Avatar
luca94 (Normal User)
Pro


Messaggi: 71
Iscritto: 07/05/2008

Segnala al moderatore
Postato alle 14:37
Martedì, 05/05/2009
Adesso funziona..grazie!!!
Cmq puoi spiegarmi più dettagliatamente perchè prima non funzionava?? In modo da capire meglio....

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 14:40
Martedì, 05/05/2009
Se passi una variabile da una funzione ad un'altra e vuoi modificare questa variabile all'interno della seconda funzione, allora devi passarne l'indirizzo in memoria e non la copia della variabile.

Se stai studiando il C++, rivedi la parte di passaggio dei valori alle funzioni (per valore, per puntatore, per reference).

PM Quote
Avatar
luca94 (Normal User)
Pro


Messaggi: 71
Iscritto: 07/05/2008

Segnala al moderatore
Postato alle 14:44
Martedì, 05/05/2009
Testo quotato


Se passi una variabile da una funzione ad un'altra e vuoi modificare questa variabile all'interno della seconda funzione, allora devi passarne l'indirizzo in memoria e non la copia della variabile.

Se stai studiando il C++, rivedi la parte di passaggio dei valori alle funzioni (per valore, per puntatore, per reference).


Grazie 1000! Ora ho capito :D

Ultima modifica effettuata da luca94 il 05/05/2009 alle 14:45
PM Quote