Type Erasure : marier la POO et la Programmation Générique
Bonjour,
J'ai publié un article que j'ai écrit à propos du principe de Type Erasure appliqué au C++. Il s'agit d'associer les templates du C++ avec la POO pour résoudre des problèmes bien précis.
Voici le synopsis de l'article.
Citation:
Si vous utilisez les templates du C++ pour écrire des composants génériques, vous avez déjà peut-être voulu les combiner à la programmation orientée objet, via de l'héritage par exemple. Peut-être avez-vous eu des difficultés ; cet article va vous présenter une technique répandue, nommée Type Erasure, qui vous permettra de tirer profit des deux mondes sans perdre en flexibilité ni en maintenabilité.
http://alp.developpez.com/tutoriels/type-erasure/
Merci pour cet excellent article.
J'avais juste 2 petites questions :
1/ Je ne comprends pas dans le destructeur de la classe de base widget :
Code:
1 2 3 4 5 6 7
|
virtual ~widget()
{
if(parent == NULL)
widget::destroy();
} |
Pourquoi tu ecris widget::destroy(); au lieu de this->destroy(). Car sinon, un widget parent n'appellera pas le destroy des sous classes widget_impl dont le destructeur est cense detruire les objets Policies ?
2/ Enfin, pourquoi l'heritage sur les classes Policies est public et non pas prive ? Les policies ne sont pas de la composition plutot que de l'heritage ?
En tous cas merci pour cet article tres instructif pour moi.