Bonjour tout le monde,
Avant tout je vous souhaite une bonne année.
Je suis confronté à une erreur que je n'arrive pas à comprendre.
J'ai trois classes qui répondent au schémas suivant : PowerMetter<-AdvancedCapteur <-Capteur. (je m'excuse pour le franglais)
J'ai une fonctionqui permet d’initialiser mon périphérique. Elle est déclarée comme étant virtuelle dans les classes AdvancedCapteur et Capteur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part void Initialize (string)
Lorsque je teste le code suivant :
powermetter::Initialize est appelée une seule fois. Je m'attends à ce qu'elle le soit une seconde fois puisque AdvancedCapteur::Initialize est déclaré comme étant virtuelle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 PowerMeter *a = new PowerMeter; a->Initialize(iniFile.toStdString()); // fait bien appel à powermetter::Initialize mSensorList.push_back(*a); mSensorList.at(mSensorList.size() - 1).Initialize(iniFile.toStdString()); // fait appel à AdvancedCapteur::Initialize
(Pour info mSensorList est un std::vector d'objet de type AdvancedCapteur).
Avez vous une idée?
Pour info je vous laisse aussi la déclaration de mes classes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class PowerMeter : public AdvancedCapteur { public: PowerMeter(); ~PowerMeter(); void Initialize(string IniFile); //bla bla bla }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class Capteur { public: Capteur(); ~Capteur(); virtual void Initialize (string IniFile);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class AdvancedCapteur : public Capteur { public: AdvancedCapteur(); ~AdvancedCapteur(); virtual void Initialize(string IniFile) {};Ca fait deux heures que je me relis et que je fais des tests rien n'y fait... SOS!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void PowerMeter::Initialize(string iniFile) { Capteur::Initialize(iniFile); //...bla bla bla
Partager