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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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
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 : 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) {};
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
Ca fait deux heures que je me relis et que je fais des tests rien n'y fait... SOS!