Par exemple, nous avons une classe Animal, et nous avons créé une autre classe telle que la classe Lion, la classe Tiger, etc. J'ai fait une liste de la classe Animal et je veux transposer la liste et traiter la liste en fonction du type de la classe de chaque membre de la liste.Comment vérifier le type d'objet en C++
Class Animal
Class Tiger :: public Animal{}
Class Lion :: public Animal{}
list<Animal> l;
Tiger T;
Lion L;
l.push_back(T); l.push_back(L);
if the top member of the list is Tiger print"ITs a tiger"
else print"something"
Simplement, je veux vérifier le type de l'instance créée. Je ne sais pas comment le faire.
Si vous voulez vérifier le type de votre conception semble faux et vous devriez envisager de le revoir.Pour connaître le type, vous pouvez utiliser 'typeinfo' de' dynamic_cast'. –
liste est faux pour cela, en raison de problème de tranchage http://stackoverflow.com/questions/274626/what-is-the-slicing-problem-in-c –
Vous devez revoir la conception. Ce dont vous avez probablement besoin, ce sont des méthodes virtuelles. Une extension à ceci est le modèle de visiteur. –