저는 C++을 배우고 있습니다. 이제 반복기에 문제가 있습니다. 이것은 나의 경우입니다. 여기에이 코드가 있습니다.목록의 세그먼트 오류 <Object*> 반복자
// std::list<Dragon*> dragons = cave.getDragons();
for (std::list<Dragon*>::iterator it = cave.getDragons().begin(); it != cave.getDragons().end(); it++){
os << std::endl << (*it)->getName();
}
세그먼트 오류를 반환합니다. 이것은 내 목록 내 getDragons() 방법 :
std::list<Dragon*> dragons;
std::list<Dragon*> getDragons() const {return dragons;}
그리고 제 질문은 ... 내가 이런 그렇게 세그먼트 오류가 이유는 무엇입니까,하지만 난 주석있는 변수 용을 사용하는 경우, 돈 ' 티? 감사!
당신은'드래곤 * '의 목록을 가지고 있으며, 그 시작 부분에 반복자를 생성하고 목록을 버리고 파괴되도록합니다. 그런 다음 iterator와 비슷한 파괴 목록을 비교합니다. 어쨌든 범위 기반 for 루프를 사용하십시오 (foreach 루프 :'for (auto * dragon : cave.getDragons())) – Justin
'getDragons()'는 복사본을 반환합니다. 어쩌면 레퍼런스가 필요할까요? –
이 테스터이고, 그것은이 코드와 함께 작동하도록 있습니다. '자동 그것은 = cave-> getDragons을()() 시작;' 그것은 테스터 –