Bonjour,
Je vous soumets un problème sans doute classique mais pour lequel je cherche une solution 'propre'.
Schématiquement :
J'ai une liste d'éléments de la classe 'Livre' que je parcours dans un tableau.
Certains de ces éléments sont des ' Roman ' ('Roman' hérite de 'Livre') pour lequel je cherche à afficher le nom de l'auteur (par exemple).
Le problème c'est que la méthode 'nom de l'auteur' n'est pas définie dans la classe 'Livre' mais est spécifique à la classe ' Roman'. Ainsi, dès la compilation, la méthode 'nom de l'auteur' appliquée à des objets de la classe 'Livre' est refusée et le compilateur indique une erreur, logique ...
Pour contourner le problème, est-il nécessaire de recréer un objet de la classe ' Roman ', par appel à un constructeur de la classe et de détruire l'objet une fois terminée ? :
Code :
- Livre objet_livre[100];
- ...
- for(i=0;i<100;i++)
- {
- ...
- if (/* objet_livre[i] est un 'Roman' */) then
- {
- Roman* proman = new Roman(objet_livre[i]);
- proman->affiche_nom_de_l_auteur();
- delete proman;
- }
- }
|
Est-ce que des solutions plus simples existent ? Y a t-il d'autres possibilités de rédaction ?
D'avance merci de vos propositions,
NathanGe