Titre complet : Gestion de la suppression d´instance de classe. (c´est un bug de la nouvelle version de JV, que le champ de texte sur la page principal du forum n´est pas limité en nombre de caractères)
Voila mon problème : Je suis entrain d´écrire une bibliothèque (plus pour l´exercice que pour autre chose) de gestion d´expression arithmétique sous forme d´arbre.
Donc chaque expression peut s´appliquer à 0, 1 ou 2 opérandes qui s´évaluent récursivement lorsque c´est nécessaire.
Et chaque operandes à un operande "père" (sauf la racine de l´expression).
Donc globalement lorsque le père est détruit il delete aussi tout ses opérandes fils (ce qui est ennuyeux s´ils ont été créé par le compilo, mais j´arrangerais ça après).
Mais pour optimiser le logiciel et pour gagner du temps de calcul je me suis dit qu´il faudrait qu´un opérande puisse avoir plusieurs père, comme celà, si une même expression intervient plusieurs fois dans un calcul, on ne l´évalue qu´une seul fois. Mais le problème est donc que l´opérande ne doit pas forcément être détruit lorsque son père est détruit. Alors bien sur le père peut demander à l´opérande s´il a d´autre pères avant de le détruire mais ce n´est pas très propre.
Alors est ce qu´il est possible pour une class dans son destructeur, d´annuler sa destruction, c´est à dire de s´arranger pour que même à l´issue de l´exécution du destructeur, un pointeur vers cette classe soit toujours valide.
Sinon l´autre possibilité sera que l´on ajoute et retire des père à la classe et que celle ci s´autodétruise lorsque l´on a retiré le dernier père, ce qui n´est pas très satisfaisant non plus, car on peut vouloir la conserver.
Au passage, je viens de découvrir l´utilité d´une fonction virtuel, je crois que c´est le dernier bout fondamental (il doit rester des trucs moins important que je ne connait pas) des principes de la POO du C++ qui me manquait.