qhrrkfl2   7년 전

하나의 클래스로 다중 상속하고

부모 클래스의 빈 포인터에다가

자식 클래스의 포인터를 넣고 

부모 클래스를 넣는 벡터를 이용해서 제어를 하고있습니다.


yukariko   7년 전

1. 우선 delete it; 은 문제가 있습니다.

delete it으로 이터레이터를 지우게되면
it에 관한 명령은 더이상 수행해선 안되겠죠?
하지만 위 코드는 it++ 를 수행하기때문에 문제가 발생하는 코드입니다.

2.  it은 포인터가 아니고 iterator라서  delete it에서 컴파일에러가 발생합니다.

3. delete는 list에서 제거하는 기능을 담당하지 않습니다.
그저 안에 들어있는 주소에 메모리 할당을 해제할 뿐이고, 포인터 변수는 list에 남아있습니다.
따라서 list에서 제거하기 위해선 erase 함수를 사용해야합니다. 

제대로된 코드를 아래 첨부합니다.

yukariko   7년 전

더이상 쓸일이 없어 delete만 하겠다고 해도 위 코드에서 delete it 대신 delete *it 으로 바뀌어야 합니다.

굳이 list에서도 지워주는 이유는, 실수라도 저 변수로 인해 오류가 발생하지 않음을 보장하는것으로 보면 되겠습니다.

qhrrkfl2   7년 전

댓글감사합니다~ 

2013부터 배웠더니 오류를 안띄어주면 실수를 많이하네여 헤헤

댓글을 작성하려면 로그인해야 합니다.