vector
에 저장된 videoObjects
의 Z- 인덱스 순서 재 지정을 수행하려고합니다. 계획은 vector
의 첫 번째 위치에 놓일 videoObject
을 식별하고, 지우고 첫 번째 위치에 삽입하는 것입니다. 아쉽게도 erase()
함수는 항상 잘못된 메모리 액세스를 발생시킵니다.Vector.erase (반복자)로 인해 잘못된 메모리 액세스가 발생합니다.
testApp.h :
vector<videoObject> videoObjects;
vector<videoObject>::iterator itVid;
testApp.cpp : 여기
내 코드입니다// Get the videoObject which relates to the user event
for(itVid = videoObjects.begin(); itVid != videoObjects.end(); ++itVid) {
if(videoObjects.at(itVid - videoObjects.begin()).isInside(ofPoint(tcur.getX(), tcur.getY()))) {
videoObjects.erase(itVid);
}
}
이 그렇게 간단해야하지만, 난 그냥 '어디에서 볼 수 없습니다 잘못 돌봐.
왜 '(* itVid)'대신에 'videoObjects.at (itVid - videoObjects.begin())'입니까? –
시도했지만, 다음 오류가 발생합니다 : 'std :: vector :: at (videoObject &)'에 대한 호출에 일치하는 함수가 없습니다. –
xon1c
'at()'을 사용할 필요가 없습니다. 조금도; 이터레이터의 역 참조는 지시 된 요소에 대한 참조를 반환합니다. –