Permet de garder une trace de toutes les classes crees.
J'ai fais ce code a la base car j'utilise souvent Qt et les connections ne peuvent etre faites que en aillant les pointeurs sur les classes que l'on veut connecter.
Cette methode est un peu genante lors de gros projets (enfin a mon gout), ou il est dur de voir quelle classe est connectee a telle autre sachant que les connections sont faites un peu partout.
Maintenant de n'importe ou dans le code on peut connecter des classes sans avoir a garder un pointeur sur celles ci, ou les isoler dans une classe qui s'occupera de faire seulement des connections par exemple.
Le but de ce code n'est absolument pas de servir de garbage collector, et encore moins de servir pour autre chose que ce qu'il a ete prevu. En revanche on peut s'en servir pour voir le nombre de classes de tel ou tel type crees, faire des stats... tant qu'il n'y a pas d'interaction forte avec votre code qui le ferait dependre entierement de ce systeme.
Utilisation:
Pour enregister une classe la macro CR_REGISTER(class) ou "class" est le nom de votre classe est a utiliser dans le constructeur.
La macro CR_UNREGISTER(class) est quand a elle utilisee dans le destructeur.
Des macros servent ensuite a recuperer les instances de classes qu'on a enregistre, a partir de n'importe ou dans le code
CR_GETFIRST(class) retourne la premiere instance de "class" trouvee
CR_GETALL(class) retourne un std::vector contenant tous les pointeurs sur les "class" enregistrees
CR_FOREACH(class) itere sur toutes les instances de "class", le pointeur se recupere avec CR_p
La sortie du main ci dessous est affichee sur le screenshot.