Bonjour,
j'ai une méthode qui n'est pas redéfinit dans ses classes filles car identique dans tous les cas jusqu'à maintenant.
J'aimerais néanmoins, sans modifier ce détail car le code est trop important pour être autant modifier pour une simple correction(et puis je ne peux pas trop modifier le code de toute façon), pouvoir tester dans la classe mère, si le type de l'objet courant est d'un certain type :
if (typeid(this) != typeid(MaClasseFille*).
if (typeid(this).name != "MaClasseFille*")
j'ai testé ceci, mais dans le premier cas, le compilo me sort un "undeclared identifier" et dans le second un problème de conversion :
Auriez-vous une idée de comment je peux m'en sortir sans trop de casse ? :)Code:
1
2
3
4
5
6 error C2040: '!=' : 'const char *(__thiscall type_info::* )(void) const' differs in levels of indirection from 'const char [16]' error C2446: '!=' : no conversion from 'const char *' to 'const char *(__thiscall type_info::* )(void) const' There is no context in which this conversion is possible error C2475: 'type_info::name' : forming a pointer-to-member requires explicit use of the address-of operator ('&') and a qualified name error C2475: 'type_info::name' : forming a pointer-to-member requires explicit use of the address-of operator ('&') and a qualified name
Edit :
pour la première version, je comprend bien que ce soit délicat pour une classe mère d'identifier "ses filles", mais je le mets au cas où vous auriez des infos à ce sujet.
J'ai vu que typeid était plus performant qu'un dynamic_cast<type> ou qu'un std::typeinfo, c'est vrai ? (et je savais pas qu'un dynamic_cast servait à cela).
EDIT2 : problème réglé, j'ai appelé la méthode name(), par contre il me retourne toujours le type de la classe mère (je sais en l'état c'est normal, je suis bête :mrgreen:).
Du coup ma question se résume à : comment je fais pour savoir de quel classe fille est issue l'appel à ma méthode ?