Voici une version allégée d'un code de liste des modèles (adapté de http://www.daniweb.com/software-development/cpp/threads/237391/c-template-linked-list-help)modèle en utilisant un autre modèle
Liste se plaint (erreur de compilation) que « nœud est pas un type ». Pourquoi est-ce, et quelle est la solution?
J'ai essayé de remplacer le "Node de classe" par un "struct Node" (et les changements liés), et la version de struct a bien fonctionné. Donc, la question principale semble être: comment une classe-modèle accède-t-elle à une autre classe-modèle?
#include <iostream>
using namespace std;
template <typename T>
class Node
{
public:
Node(){}
Node(T theData, Node<T>* theLink) : data(theData), link(theLink){}
Node<T>* getLink() const { return link; }
const T getData() const { return data; }
void setData(const T& theData) { data = theData; }
void setLink(Node<T>* pointer) { link = pointer; }
private:
T data;
Node<T> *link;
};
template <typename T>
class List {
public:
List() {
first = NULL;
last = NULL;
count = 0;
}
void insertFirst(const T& newData) {
first = new Node(newData, first);
++count;
}
void printList() {
Node<T> *tempt;
tempt = first;
while(tempt != NULL){
cout << tempt->getData() << " ";
tempt = tempt->getLink();
}
}
~List() { }
private:
Node<T> *first;
Node<T> *last;
int count;
};
int main() {
List<int> myIntList;
cout << "Inserting 1 in the list...\n";
myIntList.insertFirst(1);
myIntList.printList();
cout << endl;
List<double> myDoubleList;
cout << "Inserting 1.5 in the list...\n";
myDoubleList.insertFirst(1.5);
myDoubleList.printList();
cout << endl;
}
* "Liste se plaint (erreur de compilation) que « nœud est pas un type » * Toujours ajouter l'erreur exacte et la ligne – Zeta