(Avec le type d'effacement, je veux dire de cacher certains ou de la totalité de la nature de l'information concernant une catégorie, un peu comme Boost.Tout.)
Je veux obtenir une prise de type effacement des techniques, tout en partageant également ceux, qui, je le sais. Mon espoir est un peu pour trouver quelques fous technique que quelqu'un a pensé de son/ses heures les plus sombres. :)
La première et la plus évidente, et souvent pris approche, que je connais, sont des fonctions virtuelles. Juste masquer la mise en œuvre de votre classe à l'intérieur d'une interface de classe de la hiérarchie. De nombreuses bibliothèques Boost de le faire, par exemple Boost.Tout cela pour masquer votre type et coup de pouce.Shared_ptr cela pour masquer l' (de)de répartition de la mécanique.
Ensuite, il ya l'option avec des pointeurs de fonction de type "modèle" de fonctions, tout en maintenant l'objet réel en void*
pointeur, comme Boost.La fonction n'est pour masquer le vrai type de l'foncteur.
Pour l'instant, parce que les deux exemples sont assez long, je vais le lien vers Ideone avec classe et un exemple de code pour les deux implémentations. Si il y a un souhaite juste comprendre la source de cette question, merci de laisser un commentaire en le disant. :) Le code peut être trouvé ici. (Les exemples sont ni complète, ni réellement sans danger à utiliser. Ils montrent juste le type d'effacement de la technique.)
Donc pour ma question:
Quel autre type d'effacement des techniques de connaissez-vous? Veuillez fournir, si possible, avec un exemple de code, cas d'utilisation, votre expérience avec eux et peut-être les liens pour d'autres lectures. Ce serait vraiment génial et merci d'avance pour toutes les réponses!
Modifier
(Puisque je n'étais pas sûr que de l'ajouter comme une réponse, ou tout simplement de modifier la question, je vais le faire le plus sûr.)
Une autre bonne technique pour masquer le type réel de quelque chose sans fonctions virtuelles ou void*
tripoter, est l'un GMan emploie ici, en rapport avec ma question sur exactement comment cela fonctionne.