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 :
base.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 protected: virtual int __fastcall LireSurPortCOM(BYTE *dcReponseParam, DWORD TimeOut, bool DoAcquit);
derivee.h
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.cpp
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();
Dans mon mainform, je fais ceci :
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; }
La fonction FaireTransfert() est bien appelée depuis la classe dérivée (puisqu'elle lui est propre).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 TBase *b = new TBase(); TDerivee *d = (TDerivee *)b; d->FaireTransfert();
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 ?
Partager