...
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;} };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.
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 }
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
Partager