controler le type d'un element retourne par une fonction a l'aide du polymorphisme
...
Est-ce possible?
En gros voici mon code:
Code:
1 2 3 4 5 6 7
| class A
{
public:
A(void);
virtual ~A(void);
virtual void test() {cout<<"A"<<endl;}
}; |
Code:
1 2 3 4 5 6 7 8
| class B :
public A
{
public:
B(void);
virtual ~B(void);
virtual void test() {cout<<"B"<<endl;}
}; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| A* pointerTest(int i)
{
A* a;
B b;
A aa;
if(i==0)
{
a=&aa;
}
else
{
a=&b;
}
a->test();//"B" s'affiche
return a;
}
void main()
{
A* a=pointerTest(1);
a->test(); //"A" s'affiche
} |
Il semble qu'il y ait un cast de la classe A vers la classe B au moment du return, ce que je voudrais eviter.
Y a-t-il un moyen simple de retourner soit un element A soit un element B?
J'ai pense a ecrire une classe qui contiendrait un pointer vers un element de type A (le pointeur pouvant donc eventuellement pointer vers un element de type B) mais je me dis qu'il doit y avoir plus simple.
Si quelqu'un a une idee, merci d'avance.
Samuel