Si je comprends bien, typeid peut déterminer le type réel dans le polymorphisme, alors que typeof ne peut pas.Obtention du type de variable
Est-il également vrai que leurs rendements sont utilisés à des fins différentes: le retour de typeof est utilisé comme mot-clé de type qui peut définir une variable, mais le retour de typeid ne peut pas?
Est-il possible d'obtenir le type actuel de polymorphisme et d'utiliser le mot-clé return en tant que type pour définir une autre variable? J'espère obtenir le type de classe dérivé d'un pointeur pointant vers la classe de base et définir une variable de ou un pointeur vers la classe dérivée. Quelque chose comme:
baseclass *p = new derivedclass
typexxx(*p) *pp = dynamic_cast<typexxx(*p) *> (p);
// would like to convert the pointer from pointing to a base class
// to its derived class
Merci beaucoup!
Pouvez-vous donner un exemple de POURQUOI vous voulez faire cela? Le point principal d'une hiérarchie d'héritage est que vous n'avez normalement pas besoin de connaître le type réel. –
Je veux juste faire référence à certains membres définis dans la classe dérivée mais pas dans la classe de base. Je ne suis pas sûr que ce soit une bonne idée d'ajouter des fonctions membres à la classe de base avec le même nom que celles de la classe dérivée et de les déclarer virtuelles, car ces fonctions membres sont trop spécifiques à cette classe dérivée les classes dérivées, et la fonction de base sera plus grande si je les ajoute. – Tim
OK, vous pouvez faire ce que vous voulez avec dynamic_cast, mais vous devrez utiliser un if-ladder pour créer les pointeurs de type dérivés. –