고유 한 연결 목록을 만드는 중입니다. 다른 연결된 목록의 머리와 꼬리를 가리키는 두 node_iterators를 사용하는 연결된 목록의 오버로드 된 생성자를 만들려고합니다.잘못된 포인터의 오류를주는 노드 반복자가있는 링크 된 목록 생성자
오버로드 목록 생성자 :
template <typename T>
list<T>::list(node_iterator<T> front, node_iterator<T> back)
{
unsigned temp;
this->head = front.get_current();
while(front != back)
{
++temp;
++front;
}
this->tail = back.get_current();
this->used = temp;
}
head
위 및 tail
목록 내 노드 node<T>*
있습니다. 내가 작성한 front
및 back
개의 node_iterators가 있습니다. get_current()
메서드는 node_iterator
클래스가 가리키는 현재 노드에 node<T>*
을 반환합니다. 내 node_iterator
클래스에 과부하 된 ++
과 !=
연산자를 테스트했으며 작동합니다. 그러나 때 나는 다음과 같은 오류가 위의 생성자 내 목록 클래스를 만들려고 :
*** glibc detected *** ./a.out: munmap_chunk(): invalid pointer: 0xbf91b1a4 ***
? 더 많이 볼 필요가 있으면 알려주세요.
다른 목록의 머리와 꼬리를 가져 오는 생성자가 필요한 이유는 무엇입니까? 이러한 값은 클래스의 private 멤버 여야하며 호출 범위에서 액세스 할 수 없어야합니다. –
처음에는 'temp'가 초기화되지 않습니다. – jogojapan
스트레이트 업 디버그 세션은 여기에 주어진 추측 작업보다 더 많이 알려줄 것이라고 생각합니다. 디버거를 밟았습니까? 충돌이 일어나는 라인은 무엇입니까? 제쳐두고, 'temp'는 초기화되지 않습니다 (적어도 크라이처가 아닙니다). –