Gosseyn
Messages : 286 Inscrit le 24/01/05
Ville : Grenoble
Non connecté
|
|
Posté le 06 avril 2005 - 16 h 20 m 38 s |
|
|
Bonjour,
J'ai une classe A qui contient une methode M. Je definie une autre classe, B, qui derive de A et qui redefinit M.
Dans une fonction, dont un des parametres est un pointeur sur A, j'appelle la méthode M. Lorsque je lui passe come parametre la classe B, alors que le protype de la fonction reste avec un parametre pointeur sur A, la compilation se passe correctement. a l'execution c'est la methode de la classe A qui est executée.
J'aimerais que ce soit la methode redefinit dans la classe B qui soit appelée. Est-ce possible? Et comment procéder?
Merci pour vos reponses.
|
|
| |
Message édité 1 fois, la dernière par Gosseyn le 06 avril 2005 - 18 h 08. |
| |
"Si vous perdez, ne perdez pas la leçon."
Gosseyn
|
DeVice
Boulet occasionel...
Messages : 3 022 Inscrit le 12/03/03
Ville : Grenoble
Non connecté
|
|
Posté le 06 avril 2005 - 16 h 38 m 22 s |
|
|
Le 06 avril 2005 - 16 h 20, Gosseyn a écrit :
Bonjour,
J'ai une classe A qui contient une methode M. Je definie une autre classe, B, qui derive de A et qui redefinit M.
Dans une fonction, dont un des parametres est un pointeur sur A, j'appelle la méthode M. Lorsque je lui passe come parametre la classe B, alors que le protype de la fonction reste avec un parametre pointeur sur A, la compilation se passe correctement. a l'execution c'est la methode de la classe A qui est executée.
J'aimerais que ce soit la methode redefinit dans la classe B qui soit appelée. Est-ce possible? Et comment procéder?
Merci pour vos reponses.
|
Il faut déclarer la fonction M comme virtuelle dans la définition de A (et là seulement).
1. /*commentaire*/
2.
3. class A
4. {
5. public:
6. virtual type_retourné M(parametres);
7. }
De cette manière le "liage" de la fonction ne se fait plus à la compilation, mais à l'execution et en fonction du type du pointeur...
|
|
| |
Message édité 2 fois, la dernière par DeVice le 06 avril 2005 - 16 h 40. |
| |
Règle N°1 du forumeur : "Ta souris 7 fois autour du bouton poster tu tourneras, ainsi moins pour un âne de passer tu risqueras"
|
Gosseyn
Messages : 286 Inscrit le 24/01/05
Ville : Grenoble
Non connecté
|
|
Posté le 06 avril 2005 - 16 h 41 m 21 s |
|
|
bonjour device,
C'est effectivement ce que j'avais fait mais c'est la methode de la classe A qui s'execute tout de meme.
|
|
| |
"Si vous perdez, ne perdez pas la leçon."
Gosseyn
|
DeVice
Boulet occasionel...
Messages : 3 022 Inscrit le 12/03/03
Ville : Grenoble
Non connecté
|
|
Posté le 06 avril 2005 - 16 h 59 m 08 s |
|
|
Ah bon ?
Tu peux montrer (tout) ton code s'il te plais ?
|
|
| |
Règle N°1 du forumeur : "Ta souris 7 fois autour du bouton poster tu tourneras, ainsi moins pour un âne de passer tu risqueras"
|
Gosseyn
Messages : 286 Inscrit le 24/01/05
Ville : Grenoble
Non connecté
|
|
Posté le 06 avril 2005 - 18 h 03 m 05 s |
|
|
Re,
En fait c'est resolu. Une erreur de ma part, j'ai mélangé les classes A et B ainsi que leur instanciation. J'avais pourtant tourné mon clavier 7 fois et fait de nombreux tests avant de poster.
Merci qd meme pour ton aide, cela m'a guidé dans la recherche du probleme en validant certains points.
|
|
| |
Message édité 2 fois, la dernière par Gosseyn le 06 avril 2005 - 18 h 09. |
| |
"Si vous perdez, ne perdez pas la leçon."
Gosseyn
|