...

Est-ce possible?
En gros voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
class A
{
public:
	A(void);
	virtual ~A(void);
	virtual void test() {cout<<"A"<<endl;}
};
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
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