2017-11-25 8 views
-9

テンプレートを使用してC++でDoubly Linked Listを実装しています。私はテンプレートを手にしています。実行中のテンプレートプログラムがクラッシュする

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を比較したとき、プログラムがクラッシュしていました。

関連する問題