2017-11-25 11 views
-9

템플릿을 사용하여 C++에서 이중 링크 목록을 구현하고 있습니다. 나는 템플렛에 손을 대고있다.실행 중 템플릿 프로그램이 충돌 함

template <class T> 
class DList{ 
    Node<T> *head; 
    Node<T> *tail; 
    public: 
     Dlist(){ 
      head = tail = nullptr; 
     }  
     void addToHead(T el){ 
      Node<T> *newNode = new Node<T>(el); 
      if(head == nullptr){ 
       head = tail = newNode; 
      } 
      else{ 
       head -> prev = newNode; 
       newNode -> next = head; 
       head = newNode; 
      } 
     } }; 

이 addToHead()를 사용하면 if 조건이 실행되지 않습니다. 그리고 프로그램이 충돌합니다.

+1

일부 디버깅을해야합니다. –

+5

왜 많은 사람들이 템플릿이없는 버전을 분명히 쓸 수 없을 때 템플릿 기반 클래스와 함수를 작성하려고합니까? 단지 C++를 배우는 과정에서 복잡성을 더하는 것입니다. –

+0

당신이 어떻게 그걸 안다면, 그 비교가 실행되고 있지 않소? –

답변

0

실수는 생성자 함수를 사용하는 것과 오타였습니다. 이로 인해 headtail 포인터가 초기화되지 않고 addToHead()의 if 조건에서 head 포인터가 nullptr과 비교 될 때 프로그램이 충돌했습니다.