Caste de classe ?

Caste de classe ? - C++ - Programmation

Marsh Posté le 09-02-2010 à 19:47:58    

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 :
  1. Livre objet_livre[100];
  2. ...
  3. for(i=0;i<100;i++)
  4. {
  5. ...
  6. if (/* objet_livre[i] est un 'Roman' */) then
  7. {
  8. Roman* proman = new Roman(objet_livre[i]);
  9. proman->affiche_nom_de_l_auteur();
  10. delete proman;
  11. }
  12. }


 
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

Reply

Marsh Posté le 09-02-2010 à 19:47:58   

Reply

Marsh Posté le 09-02-2010 à 20:58:17    

dynamic_cast

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed