Quand puis-je utiliser une déclaration anticipée?

Je suis à la recherche de la définition de quand je suis autorisé à le faire avant la déclaration d'une classe dans une autre classe du fichier d'en-tête:

Suis-je autorisé à le faire pour une classe de base, pour une catégorie qu'il détient en tant que membre, pour une classe transmis à la fonction de membre par référence, etc. ?

  • Je veux désespérément ce sera renommé "quand dois-je", et les réponses mis à jour de façon appropriée...
  • Quand vous dites lors de la "devrait", vous demandez pour avis.
  • c'est ma compréhension que vous souhaitez utiliser avant de déclarations chaque fois que vous pouvez, pour améliorer le temps de construction et d'éviter les références circulaires. La seule exception est, je pense, quand un fichier include contient les typedefs, auquel cas il y a un compromis à trouver entre la re-définition de la définition de type (et risquer de changer) et comprenant un dossier complet (avec son récursive comprend).
  • À partir d'un point de vue pratique, je ne suis pas un grand fan des en-têtes de que mon. ÷
  • toujours, fondamentalement, vous obliger à inclure un en-tête différent pour les utiliser (avant decl de paramètre du constructeur est un grand coupable ici)
  • En règle générale dépendances circulaires sont mieux évités grâce à une meilleure conception de la programmation orientée objet - les exceptions s'appliquent toujours (par exemple, des visiteurs); ce qui répond à la "quand le devrais-je". Toutefois les exceptions aux règles sont des cas exceptionnels, afin de répondre à "quand je"; idéalement, rarement sans justification

InformationsquelleAutor Igor Oks | 2009-02-16