Bonjour à tous.

Considérons le code suivant :

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
24
#include<iostream>
 
class A {
public:
	void echo() {
		std::cout<<"class A"<<std::endl;
	}
};
 
class B : public A {
public:
	void echo() {
		std::cout<<"class B"<<std::endl;
	}
};
 
int main () {
	A * a = new B;
	a->echo();
	B * b = new B; 
	b->echo();
	delete a;
	delete b;
}
le résultat en console donne
class A
class B
Cela m'aurai bien arrangé que le résultat soit :
class B
class B
En fait j'aimerai que a initialement de type class A devienne de type class B lorsque je fais une allocation de type B.
Mais apparemment le type d'origine prévaut sur l'allocation même si c'est une classe fille.
(et pourtant je passe par des pointeurs !)

Dommage.

Avez vous une solution pour mon problème ?

en fait l'intérêt est d'avoir un type générique et de pouvoir par la suite choisir de quel sous type est réellement une variable.