2015-05-05 30 views
1

我想用雙鏈表實現一個DEQUE。預期的類型說明符錯誤,關於我在做什麼錯誤的任何想法?

DEQUE.h

using namespace std; 

template <typename T> 
class Node{ 
    Node(const T& data):data(data), next(0), prev(0) {} 
    public: 
     Node* next; 
     Node* prev; 
     T data; 
}; 

template <typename T> 
class DEQUE 
{ 

//interface 
}; 

DEQUE.cpp

template <class T> 
void DEQUE<T> ::AddFirst(T t){ 
    Node<T>* temp = new Node(t); 
    if (counter != 0) { 
     temp->next = head; 
     temp->prev = 0 ; 
     head->prev = temp; 
     head =temp; 
     counter++; 
    } 

    else{ 
     head = temp; 
     tail = temp; 
     temp->next = 0; 
     temp->prev = 0; 
     counter++; 
    } 
}; 

我得到之前 '節點' 錯誤預期的類型說明符就行了

Node<T>* temp = new Node(t); 

我在做什麼這裏錯了嗎?我在這裏先向您的幫助表示感謝。

Node<T>* temp = new Node<T>(t); 
         ^^^ missing. 

用於創建Node一個實例的類型不會自動假定與用於DEQUE類型:

+0

你缺少'#include「DEQUE.h」' –

+0

有點相關:*很有可能模板實現應該移到你的deque.h頭文件中。 [閱讀此爲什麼。](https://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file?s=2|2.6716)。 – WhozCraig

+0

@ DrewDormann- DEQUE.h在那裏,我只是展示了代碼中有問題的部分。 –

回答

2

您創建實例時的Node忘記的類型。你必須明確指定它。

相關問題