2011-03-06 6 views
1

J'ai créé une classe "Node" pour contenir un tas de données. J'essaye de faire une liste du même type de cette classe. J'ai des erreurs en essayant d'utiliser push_back() ou l'une des autres fonctions.Comment créer et utiliser une liste, de type "customClass"

erreur est le suivant: " /home/.../FIFO.cpp|61|error: pas de fonction concordante pour l'appel à « std :: liste> :: push_back (Node * &) » |"

Node *tempProcess; 
list<Node> processList; //list of all processes 

tempProcess = new Node(tempArrivInt, tempExecInt); 
processList.push_back(tempProcess); 

Quelqu'un peut-il aider?

Répondre

4

L'erreur du compilateur vous indique "Impossible de trouver une fonction push_back qui prend un Node * comme paramètre". C'est parce que votre liste contient Node et non Node *, ce ne sont pas les mêmes types. Utilisez:

list<Node *> 
3

Vous créez une liste de Node s, mais essayez d'insérer un Node* (pointeur vers Node), qui est ce que new rendements.

Si vous souhaitez utiliser un list<Node>, vous pouvez écrire:

processList.push_back(Node(tempArrivInt, tempExecInt)); 

Si vous voulez créer vos objets Node avec new, vous devez modifier le code dans la question afin que processList est un list<Node*>. Notez que dans ce cas, vous devrez manuellement delete vos objets Node avant de supprimer un élément de la liste, sinon vous aurez une fuite de mémoire.

+0

merci pour l'aide. résolu mon problème. :) – Robin

Questions connexes