2017-04-04 40 views
-2

我的customLinkedList中的問題在哪裏? 我已經創建了customLinkedList,它可以包含所有類型的值。 我不知道問題出在哪裏...... 最後一行主要出現錯誤「表達式必須有類型」。 有人可以幫助我嗎?當創建一個具有通用值的列表時,「表達式必須有類型」

#include "stdafx.h" 
#include <iostream> 
#include <string> 

using namespace std; 
/* 
struct ha tutte le variabili pubbliche 
*/ 

//CLASS NODE 
template <class T> 
class Node { 
public: 
    T data; 
    Node<T>*next; 
    Node(); 
    Node(T v); 
    Node<T>(T v, Node *nextNode); 
    T getValue(); 
}; 

template <class T> 
Node<T>::Node() { 
    data = null; 
    next = nullptr; 
} 
template <class T> 
Node<T>::Node(T v) { 
    data = v; 
    next = NULL; 
} 

template <class T> 
Node<T>::Node(T v, Node *nextNode) { 
    data = v; 
    next = nextNode; 
} 
template <class T> 
T Node<T>::getValue() { 
    return data; 
} 

/*-------------------------------------------------------------------------------------------------*/ 

/* 
class tutte le variabili private. 
uso etichetta public: per avere variabili e funzioni pubbliche 
*/ 

//CLASS LIST 
template <class T> 
class List { 
    Node<T> *head; 
public: 
    List(); 
    ~List(); 
    void addFirst(T v); 
    void deleteN(T v); 
    Node<T> *find(T v); 
}; 

template <class T> 
List<T>::List() { 
    head = NULL; 
} 

template <class T> 
List<T>::~List() { 
    Node<T> *tmp = head; 
    while (tmp != NULL) { 
     tmp = head->next; 
     delete head; 
     head = tmp; 
    } 
} 

template <class T> 
void List<T>::addFirst(T v) { 
    Node<T> *n = new Node<T>(); 
    n->data = v; 
    n->next = head; 
    head = n; 
} 
template <class T> 
Node<T>* List<T>::find(T v) { 
    Node<T> * tmp = head; 
    while (tmp->data != v && tmp != NULL) { 
     tmp = tmp->next; 
    } 
    return tmp; 
} 

template <class T> 
void List<T>::deleteN(T v) { 
    Node<T> *iter = this->head; 
    Node<T> *temp = iter; 
    while (iter != NULL) { 
     if (iter->data == data) { 
      temp->next = iter->next; 
      delete iter; 
      break; 
     } 
     else { 
      temp = iter; 
      iter = iter->next; 
     } 
    } 
    return; 
} 



int main() { 
    Node<int> n1(); 
    Node<int> n2(5); 
    Node<char> n3('z'); 
    char c = n3.getValue(); 
    printf("%c" , c); 
// with Node all work well... 

    List<string> l1(); 
    l1.addFirst("Hello"); 
} 
+0

請編輯您的問題以提供[mcve]。 –

+0

順便說一句,你的addfirst函數可能是'head = new節點(v,head);' – Walter

+0

Walter是的,你是對的......但這不是主要問題... –

回答

0

我懷疑

List<string> l1(); 

應該

List<std::string> l1; 

string可以被定義的地方,從而導致錯誤。

+0

是的,現在工作得很好... –