Bonjour,
J'ai un probl�me de polymorphisme et je voudrais savoir si c'est moi qui suis � la masse ou bien si c'est un bug dans mon code. (Dans les deux je suis � la masse).
Bref voici une repr�sentation de mon code
Donc en fait ce que je voudrais c'est que lors de l'instanciation de la classe B, je passe par classe A. Cette classe A d�clenche l'initialisation ( avec Init ). Mais je voudrais que cet appel lance la fonction ClassB::Init ().
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
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
51
52
53 // ----- ClassA.h ----- // class ClassA { ClassA ( ); ~ClassA ( ); virtual Init ( ); } // ----- ClassA.cpp ----- // ClassA::ClassA ( ) { Init ( ); } ClassA::~ClassA ( ) { } ClassA::Init ( ) { // Initialisation } // ----- ClassB.h ----- // class ClassB : public ClassA { ClassB ( ); ~ClassB ( ); virtual Init ( ); } // ----- ClassB.cpp ----- // ClassB::ClassB ( ) :ClassA ( ) { } ClassB::~ClassB ( ) { } ClassB::Init ( ) { ClassA::Init ( ); // Initialisation } // ----- Dans le reste de mon code ----- // ClassB * B = new ClassB ( );
Mais comme vous vous en doutez, �a ne marche pas.
En fait lors de l'instanciation de la classe A, il lance la fonction ClassA::Init ( ) et non celle de la classB. En debug, j'ai v�rifier le type de l'objet en cours d'instanciation. Donc quand je suis dans ClassA le type est ClassA et quand je reviens dans ClassB l'objet est de type ClassB.![]()
Bref, il y a t'il un programme dans mon code ou alors ce n'est pas possible de la faire comme �a ?Je pr�viens, j'ai d�j� mis les 3 colotes r�glementaires quand un truc ne tourne pas rond. En esp�rant que c'est bien le PC qui a tord sinon les colotes sont pour moi.
Merci d'avance
Partager