Mon C++ est un peu rouillé mais j'ai fait un programme qui inverse une liste chaînée et maintenant j'essaye d'écrire les destructeurs appropriés mais je ne sais pas exactement quoi détruire. Voici les définitions de mes classes:Exemple de destructeur C++
class LinkedList
{
private:ListElement *start;
public:LinkedList();
public:void AddElement(int val);
public:void PrintList();
public:void InvertList();
};
class ListElement
{
public:int value;
public:ListElement * link;
public:ListElement(int val);
public:ListElement();
};
class Stack
{
private:ListElement ** stack;
private:int index;
public:Stack(int size);
public:void push(ListElement * le);
public:ListElement * pop();
};
La pile est pour lorsque j'inverse la liste. En tout cas ... Comment pourrais-je écrire les destructeurs pour ceux-ci? Je pensais:
Pour le ListElement faites la valeur 0 et le lien 0 (NULL).
Pour le LinkedList parcourir les éléments et appeler le ListElementDestructor pour tous.
Je ne suis pas très sûr à ce sujet parce que si je comprends bien le destructeur appelle automatiquement les destructeurs des objets membres, donc écrire uniquement un destructeur vide pour LinkedList suffit dans ce cas? Je ne sais pas ... c'est pourquoi je demande
Pour la pile je ne sais pas ... les pointeurs sont déjà 0 (NULL) après que la liste soit inversée car ils sont tous popés.
Je suis un peu confus. Quelqu'un peut-il aider? Merci d'avance.
Ne serait-il pas plus facile d'inverser la direction des pointeurs entre les éléments plutôt que d'utiliser une pile? – Yacoby
La répétition des mots-clés privés et publics est inutile. Just private: // Déclarations de variables privées public: // Public var déclarations – batbrat
Je suggère également de rendre le membre "link" privé de listElement, et de lui fournir un accès en lecture seule par un next () méthode – davka