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