Ciao.
Devo assolutamente chiarirmi le idee sui puntatori e le variabili
Ho una funzone del tipo:
questa riempie un vector di puntatori tagPositionXYZ,e quando esco dalla funzione mi conserva i dati del vectorcodice:void CImporter::ImportVertex(CSubMeshData * subMesh) { //chiamo la funzione di reset dei vertici m_pApi->VertexReset(); float x,y,z; //finchè il reader mi restituisce true ho un vertice da importare //esco quando non ci sono piu' vertici for(int index = 0;m_pApi->NextVertex();index++) { tagPositionXYZ* pos = new tagPositionXYZ(); if(m_pApi->ImportVertex(&x,&y,&z)) { pos->x = x; pos->y = z; pos->z = -y; subMesh.m_VertexBuffer.push_back(pos); } } }
questa riempie un vector di tagPositionXYZ e quando esco dalla funzione mi ritorna il vector, riempito se aggiungo la clausola return xxxx.codice:std::vector<tagPositionXYZ> CImporter::ImportVertex(CSubMeshData subMesh) { //chiamo la funzione di reset dei vertici m_pApi->VertexReset(); float x,y,z; //finchè il reader mi restituisce true ho un vertice da importare //esco quando non ci sono piu' vertici for(int index = 0;m_pApi->NextVertex();index++) { tagPositionXYZ pos ; if(m_pApi->ImportVertex(&x,&y,&z)) { pos.x = x; pos.y = z; pos.z = -y; subMesh.m_VertexBuffer.push_back(pos); } } return subMesh.m_VertexBuffer; }
Al lavoro mi hanno consigliato di utilizzare dove si puo' una variabile , anche perchè non necessita di distruzione e posso sempre passarla come puntatore con &variabile.
Il problema è che se ho creato nel 2° modo un vector di variabili ed esco dalla funzione o dalla classe senza il return <vector di var> perdo i dati giusto?
quindi devo stare attento alla visibilità.
quindi quando mi consigliate di utilizzare dei puntatori e quando le variabili , in questo e in altri casi.
Grazie

Rispondi quotando