Salut,

Voilà le topo :

J'ai une classe de base définissant quelques fonctions, et j'ai deux classes dérivées de cette classe de base.
Certaines fonctions de la classe de base sont redéfinies dans les classes dérivées.

J'ai un soucis concernant l'appel aux fonctions qui existent dans la classe de base et qui sont redéfinies, et ceci depuis les classes dérivées.

Voilà un peu de code :

base.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
protected:
    virtual int __fastcall LireSurPortCOM(BYTE *dcReponseParam, DWORD TimeOut, bool DoAcquit);
base.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
int __fastcall TBase::LireSurPortCOM(BYTE *dcReponseParam, DWORD TimeOut, bool DoAcquit)
{
    return 0;
}
derivee.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
private:
    int __fastcall LireSurPortCOM(BYTE *dcReponseParam, DWORD TimeOut, bool DoAcquit);
    int __fastcall FaireTransfert();
derivee.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
int __fastcall TDerivee::LireSurPortCOM(BYTE *dcReponseParam, DWORD TimeOut, bool DoAcquit)
{
    bla bla bla
    return result;
}
 
int __fastcall TDerivee::FaireTransfert()
{
    int result = LireSurPortCOM(paramètres...);
    return result;
}
Dans mon mainform, je fais ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
TBase *b = new TBase();
TDerivee *d = (TDerivee *)b;
d->FaireTransfert();
La fonction FaireTransfert() est bien appelée depuis la classe dérivée (puisqu'elle lui est propre).
Par contre, dans la fonction FaireTransfert() elle-même, l'appel à la fonction LireSurPortCOM passe par la fonction de la classe de base et non la fonction redéfinie !

J'ai loupé quelque chose ?