2015-03-17 1 views
1

J'ai créé une classe qui a un tas de classes héritées (classes parentes) afin que je puisse utiliser le polymorphisme mais le problème est qu'il y a deux classes qui s'appellent l'une l'autre.Comment faire pour renvoyer une classe qui hérite d'une autre classe C++?

Je dois donc les déclarer et je peux transmettre une classe, mais quand je transfère la classe héritée, le compilateur dit qu'il ne peut pas changer de pointeur de l'une à l'autre.

Existe-t-il un moyen de faire la déclaration directe de la classe héritée afin qu'elle déclare qu'elle en hérite? Ex:

class Shape; 
class Circle:Shape; 
+1

Je suppose que vous avez déjà lu [cet article] (http://en.wikibooks.org/wiki/C++_Programming/Code/Design_Patterns/Creational_Patterns)? –

+0

Connexes: http://stackoverflow.com/questions/12902751/how-to-clone-object-in-c-or-is-there-another-solution –

+0

@RSahu ... comment cela est-il lié? – Yakk

Répondre

0

Vous n'avez pas besoin de spécifier l'arbre généalogique, après le nom de classe, lors de déclarations préalables. Lorsque vous déclarez des classes qui utilisent l'héritage, le compilateur apprécierait la déclaration complète des classes parentes. En règle générale, les types de déclaration de pointeurs et de références peuvent être résolus à l'aide de déclarations directes. Tout code qui accède à des éléments d'une classe via des pointeurs ou des références a besoin de la déclaration de classe complète.

+0

En particulier, le transtypage d'une distribution dérivée vers une classe de base compte comme l'utilisation de la classe, et pas seulement comme référence ou pointant vers la classe, vous avez donc besoin de la déclaration complète disponible. –