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 ?
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 ? :
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