Oppure

Loading
05/05/09 12:22
luca94
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:
#include <iostream>
using namespace std;
class classe
{
public:
             void strlung(char stringa[500], int lung)
             {
                
                lung=0;  
                char* punt;
                punt = & stringa[0];    
                do
                {
                    punt++;
                    lung++;
                }
                while(*punt != NULL);
                }
};

Praticamente assegna alla variabile lung la lungeza della stringa.
Nel file cpp utilizzo la classe così:
#include <iostream>
#include "file_creato_da_me.h"
using namespace std;
int main()
{
    char stringa[500];
    int lol;
    cout << "Insert stringa" << endl;
    cin >> stringa;
    classe ogetto;
    ogetto.strlung(stringa, lol);
    cout << lol << endl;
    system("pause>nul"); 
}

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 05/05/09 12:23
aaa
05/05/09 12:30
theprogrammer
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 05/05/09 12:30
aaa
05/05/09 12:37
luca94
Adesso funziona..grazie!!!
Cmq puoi spiegarmi più dettagliatamente perchè prima non funzionava?? In modo da capire meglio....
aaa
05/05/09 12:40
theprogrammer
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).
aaa
05/05/09 12:44
luca94
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 05/05/09 12:45
aaa