1. 우선 delete it; 은 문제가 있습니다.
delete it으로 이터레이터를 지우게되면
it에 관한 명령은 더이상 수행해선 안되겠죠?
하지만 위 코드는 it++ 를 수행하기때문에 문제가 발생하는 코드입니다.
2. it은 포인터가 아니고 iterator라서 delete it에서 컴파일에러가 발생합니다.
3. delete는 list에서 제거하는 기능을 담당하지 않습니다.
그저 안에 들어있는 주소에 메모리 할당을 해제할 뿐이고, 포인터 변수는 list에 남아있습니다.
따라서 list에서 제거하기 위해선 erase 함수를 사용해야합니다.
제대로된 코드를 아래 첨부합니다.
qhrrkfl2 7년 전
하나의 클래스로 다중 상속하고
부모 클래스의 빈 포인터에다가
자식 클래스의 포인터를 넣고
부모 클래스를 넣는 벡터를 이용해서 제어를 하고있습니다.