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++ - Return un puntatore a STL vector
Forum - C/C++ - Return un puntatore a STL vector

Avatar
deoiang (Normal User)
Newbie


Messaggi: 5
Iscritto: 11/05/2009

Segnala al moderatore
Postato alle 18:29
Lunedì, 06/07/2009
Ciao ragazzi,

sto scrivendo una funzione in c++ che come valore di ritorno mi deve restituire un puntatore ad un vectot STL. Purtroppo ottengo alcuni errori.

Ecco il codice:


Codice sorgente - presumibilmente C#

  1. std::vector<double>* getC(int col, int n_col, int n_rig, char* nomMat)
  2. {  
  3.        
  4.  
  5.         std::vector<double> Ki;
  6.        
  7.         double dr;
  8.         FILE *readF;
  9.    
  10.         int byte = 8;
  11.         readF= fopen(nomMat, "r+b");
  12.        
  13.         int i, val_el;
  14.         for(i=0; i < n_col; i++){
  15.  
  16.                         val_el = ((i*n_col) + (col-1))* byte;
  17.                        
  18.                          fseek (readF,val_el , SEEK_SET);
  19.          
  20.                         fread(&dr,sizeof(dr),1,readF);
  21.                        
  22.                         cout << "\n valore elemento: " << dr << endl;
  23.                         Ki.push_back(dr);
  24.         }
  25.  
  26.          
  27.         fclose(readF);
  28.         return &Ki;
  29. }



in pratica ottengo errori all'istruzione &Ki. Su internet ho visto che si potrebbe usare un iteratore, qualcuno può dirmi come fare?

Grazie a tutti!

PM Quote
Avatar
Xaratroom (Ex-Member)
Expert


Messaggi: 526
Iscritto: 03/04/2008

Segnala al moderatore
Postato alle 17:38
Martedì, 07/07/2009
Una variabile allocata in una funzione viene memorizzata sullo stack e cessa di esistere quando la funzione ritorna (regole di lifetime).
Devi allocare dinamicamente quell'oggetto (tramite new).


bool Woman::makeYourselfBetter() {
       goto bathroom;

bathroom:
       while (1);

       return this->_isGoodResult();
}
PM Quote