함수 클래스 내에서 클래스 벡터의 push_back을 사용하는 데 문제가 있습니다.함수 클래스 내에서 push_back을 사용하여 포인터 벡터의 크기를 업데이트
내 홈페이지 :
int main(int argc, char* argv[])
{
//blah blah before here...
vector <C_Aerogerador*> ptrAerogeradores;
//the following lines are just for example
int size = 4;
for (int i = 0; i < size; i++)
{
ptrAerogeradores.push_back(new C_Aerogerador);
}
//OK, now I have a vector of pointer with size 4
//Creating an object of C_Aerogerador to call a function Class of C_Aerogerador
C_Aerogerador * teste = new C_Aerogerador;
teste->carregaConfig(ptrAerogeradores);
//PROBLEM! After the calling of the function carregaConfig the
// size of ptrAerogeradores is still 4
}
그리고 C_Aerogerador'Class의 기능 carregaConfig은 다음과 같습니다
void C_Aerogerador::carregaConfig(vector <C_Aerogerador*> ptrAerogerador)
{
//blah blah, setting some values in ptrAerogerador
// example:
ptrAerogerador[0]->areaVarrida = 5;
//after adding some values I want to push back the ptrAerogerador
ptrAerogerador.push_back(new C_Aerogerador);
// It didn't work.
}
함수에 입력 매개 변수 벡터의 로컬 복사본이 있습니다. "참조로 전달"을 찾으십시오. – juanchopanza
포인터가 정말로 필요한 경우, 스마트 포인터 또는'boost :: ptr_'컨테이너를 사용하십시오. –
chris
@RodolfoCalderonMachado (아래 설명문), 요소가 복사됩니다. 복사 된 요소는 같은 위치를 가리 킵니다. – chris