Bonjour,
Je crois avoir ce qui peut être un problème d'héritage. Je fais un programme de traitement d'images en ligne de commande. J'ai entre autre une classe Inversion qui hérite de la classe Command. J'ai prototypé une méthode run() en virtual dans Command pour que quand on la lance ce soit plutot la méthode redéfinie dans Inversion qui soit appelé. Cependant, à l'éxécution c'est la méthode run() de la classe mère qui est appelé à la place. D'où vient l'erreur ?
Voici mes deux .h :
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 #ifndef COMMAND_H #define COMMAND_H #include <string> #include <vector> #include <iostream> using namespace std; class Command { public: Command(); virtual ~Command(); virtual void run(); protected: private: }; #endif // COMMAND_Het leur .cpp
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 #ifndef INVERSION_H #define INVERSION_H #include "Command.h" using namespace std; class Inversion : public Command { public: Inversion(); virtual ~Inversion(); void run(); protected: private: }; #endif // INVERSION_H
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "Command.h" Command::Command(){} Command::~Command(){} void Command::run(){ cout<< "classe mere" << endl; }Merci d'avance !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include "Inversion.h" Inversion::Inversion(){ Command(); } Inversion::~Inversion(){} void Inversion::run(){ cout<< "classe fille" << endl; }
EDIT: J'ai essayé de garder que le strict nécéssaire dans le code.
Partager