S.O.S : Fonctions membres et classes dérivées
Bonjour à tous et merci de lire ce message.
J'ai un gros probleme. Je débute en programmation objet et je suis bloqué sur un probleme de classes dérivées.
Je vais essayer de l'énoncer simplement. Je cherche à faire du code portable (uitlisable a la fois sous linux et windows). J'ai une classe qui doit etre utilisable de manière générique mais les fonctions membres sont implémentées différement sous linux et windows.
LA CLASSE GENERIQUE
CAffichegénérique:
- void afficherconsole ()
LES CLASSES DERIVEES SPECIALISEES
CAfficheLinux ::CAffichegénérique
-void afficherconsole()
CAfficheWindows::CAffichegénérique
-void afficherconsole()
Il n'y a rien dans afficherconsole() de CAffichegénérique, le code étant défini dans les classe dérivées.
Pour que cette fonction membre soit appelée partout dans mon code de manière générique, je procede comme ca dans le code générique de mon application:
Definition de classe puis instantiation en tant que classe dérivée:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| int main (void)
{
CAffichegénérique Aff; //Je la définis comme classe générique
#ifdef LINUX
Aff = new CAfficheLinux(); //(Pour une l'application sous linux :lol: )
#elif defined WINDOWS
Aff = new CAfficheWindows();
#endif
Aff.afficherconsole();
return 1;
} |
Le probleme c'est que comme il n'y a rien de dans afficherconsole() de la classe CAffichegénérique, quand je fais, dans mon code :
Aff.afficherconsole();
ca ne marche pas. Est ce que je peux proceder comme ca? Comment faire comprendre que meme si l'instance Aff est de type CAffichegénérique, si je l'instantie comme CAfficheLinux, l'appel à afficherconsole() doit aller chercher le code dans la classe dérivée? N'est ce pas une histoire de mot clé virtual ou un truc dans le genre?
Merci d'avance pour vos réponses, je commence a désespérer
:tagcode::merci: