Bonjour à tous,

J'ai un ensemble de classe qui héritent les une des autres :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Class Mere
{
public:
	Mere();
	virtual ~Mere();
 
	void MethodeDeMere();
}
 
Class Fille : public Mere()
{
public:
	Fille();
	~Fille();
 
	void MethodeDeFille();
}
Les différentes instances de Mereet Fillesont stockées dans un vecteur déclaré comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
std::vector<Mere * > datas;
Tout celà marche bien.

Mon problème intervient quand j'ai besoin de récupérer les données.

Comment lors de l'itération du vecteur savoir quel est le type réel de l'objet lu afin de pouvoir récupérer les données qui lui sont propre ?
Je recherche à faire quelque chose comme ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
for ( auto &d : datas ) {
    if(d == Fille)
		d->MethodeDeFille();
	else
		d->MethodeDeMere();
}
Tester via un dynamic cast :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
if(Fille* v = dynamic_cast<Fille*>(ptr))
ne me parait pas possible puisque 2 classe soeurs pourraientt valider le test (Fille 2 pourrait être casté en Fille par exemple). Sans compter qu'un dynamic_cast n'est certainement pas annodin en terme de performance.

Quelles sont mes options ?

merci