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