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:
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
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
Partager