2013-02-20 2 views
0

Comment puis-je obtenir le nom de classe père du diagramme ?.get class Nom + Héritage

Father *a = new Father(); 
a = &(FatherFactory::getCode("Goppa")); //getcode return a type Nieto 
Grandfather *c3 = a; 

J'essaie en utilisant la méthode typeid mais j'obtenir le nom de la classe de grand-père i.e. typeid (c3) .name(); et si j'écris typeid (* c3) .name() j'obtiens le nom de la classe Nieto. Mais je veux obtenir le nom de la classe de Père ...

Father & FatherFactory::getCode(char* codeName) 
{ 

    return *(new Nieto()); 

} 

enter image description here

+3

Vous rendez-vous compte que vous perdez de la mémoire lorsque vous réaffectez 'a'? – 0x499602D2

+0

@David I éditer la méthode getCode de la question retourner un type Nieto mais lancer avec la classe Père. Égal, vous pensez que j'ai une fuite de mémoire? – Juan

+0

C'est simplement irrationnel. Regardez simplement c3: C'est un pointeur vers Grand-père, pointant sur une instance de Nieto. Par quel raisonnement pensez-vous que nous pouvons obtenir "Père" à travers C3? Classe parente de la classe de l'instance réelle? ou quoi? ... –

Répondre

0

si vous avez besoin nom de la base immédiate, vous devrez ajouter la fonction virtuelle retourner et mettre en œuvre avec précaution dans toutes les classes. mais on ne sait pas ce que vous voulez et pourquoi et vous fuyez toujours l'objet de la première ligne sur la seconde. votre question est étrange, vous devez probablement apprendre le C++ mieux