2017-03-02 11 views
-4

그래서 내가 벡터를 배우기 시작하고 내가 구조체 벡터에서 요소를 삭제하고 싶어, 내가 구조체로이 있습니다지우기 요소

typedef struct Carro{ 
    int id, cc, cv; 
    char marca[50], modelo[50]; 
}car; 

typedef struct Condutor{ 
    vector<car> cars; 
    int id; 
    int totalC=0; 
    char nome[50]; 
}driver; 

이것은 삭제 :

for(int i=0; i< (*ptr).size(); i++){ 
    if((*ptr)[i].id == id){ 
     (*ptr).erase((*ptr).begin +i); 
     verif=true; 
     break; 
    } 
    else{ 
     verif=false; 
    } 
} 

하지만 그것을 실행하려고하는 동안 지우기 줄에이 오류가 발생하지 않습니다 작동하지 않는 것 :

나는 어떻게 삭제할 수 있습니까? 벡터에서 멘토? ptr이 무엇인지 모른 채

+2

[OT] 우연히 C에서 오십니까? 코드에서 C++로 할 필요가없는 몇 가지 C'isms가 있습니다. – NathanOliver

+1

그리고 C에서도'ptr-> thing'을 말할 수 있습니다 –

+2

begin()은 메소드입니까? – mpiatek

답변

1

, 이것은 추측의 비트,하지만 당신은 아마 대신 원하는 :

(*ptr).erase((*ptr).begin +i); 

이 :) (시작

ptr->erase(ptr->begin() +i); 

기능입니다 - 당신의 코드는 그것을 함수 포인터로 취급하려고합니다.

+0

예, 깜빡했는데, ptr은 메인에서 왔고 & 드라이버입니다. 당신의 대답은 정확합니다. 나는 당신에게 체크를 줄 것이고, 저는 이걸로 오랫동안 간절히 간 것입니다. 감사 –