Les Modèles C++ - LinkedList

EDITION-réponse ci-dessous, a raté l'angle des accolades. Merci à tous.

J'ai été de tenter d'écrire un rudimentaire seule liste liée, que je puisse utiliser dans d'autres programmes. Je veux être en mesure de travailler avec les intégrés et les types définis par l'utilisateur, le sens qu'il doit être basé sur un modèle.

Pour cette raison mon nœud doit également être basé sur un modèle, que je ne connais pas l'information qu'il va stocker. J'ai écrit une classe de nœud comme suit -

template <class T> class Node
{
    T data; //the object information
    Node* next; //pointer to the next node element

public:
    //Methods omitted for brevity
};

Ma liste liée classe est mis en œuvre dans une salle de classe, et doit instancier un nœud lors de l'ajout de nouveaux nœuds à la fin de la liste. J'ai mis en œuvre comme suit -

#include <iostream>
#include "Node.h"
using namespace std;

template <class T> class CustomLinkedList
{
    Node<T> *head, *tail;

public:

    CustomLinkedList()
    {
        head = NULL;
        tail = NULL;
    }

    ~CustomLinkedList()
    {

    }

    //Method adds info to the end of the list
    void add(T info)
    {
        if(head == NULL) //if our list is currently empty
        {
            head = new Node<T>; //Create new node of type T
            head->setData(info);
            tail = head;
        }
        else //if not empty add to the end and move the tail
        {
            Node* temp = new Node<T>;
            temp->setData(info);
            temp->setNextNull();
            tail->setNext(temp);
            tail = tail->getNext();
        }
    }

    //print method omitted
};

J'ai mis en place un pilote/de la classe de test comme suit -

#include "CustomLinkedList.h"
using namespace std;

int main()
{
    CustomLinkedList<int> firstList;

    firstList.add(32);
    firstList.printlist();
    //Pause the program until input is received
    int i;
    cin >> i;

    return 0;
}

J'obtiens une erreur lors de la compilation toutefois - erreur C2955: "Nœud": utilisation de la classe de modèle de modèle de liste d'arguments - des points qui m'a à la ligne suivante de code dans la méthode add -

Node* temp = new Node<T>;

Je ne comprends pas pourquoi cela n'a aucune information sur le type, depuis qu'il a été transmis à la liste lors de la création dans ma classe pilote. Que dois-je faire pour transmettre les informations de type de Nœud?

Dois-je créer un privé struct nœud au lieu d'une salle de classe, et de combiner les méthodes de ces deux classes dans un même fichier? Je ne suis pas certain cela permettrait de résoudre le problème, mais je pense qu'il pourrait. J'aurais préféré séparer les classes, si possible.

Merci, Andrew.

Merci pour le super rapide réponse. Stupide erreur de ma part. Des acclamations.
Saviez-vous que le C++ de la bibliothèque standard fournit déjà une double liaison dans le modèle de liste (std::list)? Aussi, la bibliothèque Boost fournit "intrusif" les listes chaînées.
Oui, je sais, mais de faire votre propre est censé être une bonne pratique, en particulier pour le pointeur de la logique. En Plus je veux mettre en œuvre certaines des méthodes un peu différemment. Merci pour les conseils.

OriginalL'auteur Drew_StackID | 2010-01-16