2008-10-15 7 views

Répondre

52

L'idiome "pimpl" est la façon dont cela est généralement géré.

Voir

+0

Merci, cela fonctionne maintenant. Ces deux articles expliquent bien l'idiome. – jeffythedragonslayer

+0

Cela a-t-il un impact sur les performances? – jjxtra

+0

En général, oui, cela pourrait avoir un impact sur les performances, car il y a un déréférencement de pointeur impliqué chaque fois que l'on accède au contenu privé. Cependant, un compilateur peut être capable de l'optimiser de sorte que l'impact soit négligeable. –

4

La manière classique de faire est avec un pointeur proxy à une classe interne implémente la fonctionnalité. Il n'y a aucun moyen de faire des définitions de classe partielles en C++ que je connais.

1

Going commerciale? ;)

Vous pouvez créer des fichiers d'en-tête dans lesquels vous déclarez uniquement l'API publique et protégée.

L'utilisateur est seulement présenté avec ceux-ci, qu'ils peuvent inclure. Ils lient leur code avec une bibliothèque que vous avez créée en utilisant l'API complète et les définitions. Pour les fonctions inline: assurez-vous qu'elles sont utilisées dans du code non-aligné, alors il y aura une définition disponible dans la bibliothèque (je ne suis pas sûr que ce sera inline dans l'implémentation de l'utilisateur, cependant).

Pour le code basé sur un modèle, il n'y a pas de véritable solution. Une solution demi-hearted est de faire du code, qui utilise le code basé sur un modèle avec différents types d'objets. L'utilisateur sera limité à ceux-ci, car ce sont les seules définitions disponibles dans votre bibliothèque.

Questions connexes