1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| enum ClassType
{
fils1,
fils2,
fils3
};
class Mere
{
public:
virtual ClassType type() const = 0;
};
class Fils1 : public Mere
{
public:
virtual ClassType type() const {return fils1;}
};
class Fils2 : public Mere
{
public:
virtual ClassType type() const {return fils2;}
};
class Fils3 : public Mere
{
public:
virtual ClassType type() const {return fils3;}
};
int main()
{
std::vector<Mere*> tab;
/* ... */
for(auto it : tab)
{
switch(it->type())
{
case fils1:
Fils1 * temp= dynamic_cast<Fils1*>(it);
/* ... */
break;
case fils1:
Fils2 * temp= dynamic_cast<Fils2*>(it);
/* ... */
break;
case fils1:
Fils3 * temp= dynamic_cast<Fils3*>(it);
/* ... */
break;
}
}
} |
Partager