Fonction virtuelle appelée
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 fonction
Code:
void Initialize (string)
qui permet d’initialiser mon périphérique. Elle est déclarée comme étant virtuelle dans les classes AdvancedCapteur et Capteur.
Lorsque je teste le code suivant :
Code:
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 |
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.
(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:
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:
1 2 3 4 5 6 7 8
|
class Capteur
{
public:
Capteur();
~Capteur();
virtual void Initialize (string IniFile); |
Code:
1 2 3 4 5 6 7 8 9
|
class AdvancedCapteur :
public Capteur
{
public:
AdvancedCapteur();
~AdvancedCapteur();
virtual void Initialize(string IniFile) {}; |
Code:
1 2 3 4 5
|
void PowerMeter::Initialize(string iniFile)
{
Capteur::Initialize(iniFile);
//...bla bla bla |
Ca fait deux heures que je me relis et que je fais des tests rien n'y fait... SOS! :calim2: