cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 2009
-
23 avril 2007 à 00:31
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 2009
-
23 avril 2007 à 21:58
Bonsoir a tous,
voila en fait j'ai deux classes comme ceci:
class CEnvironnement
{ ... }
class CInterieur : public CEnvironnement
{ ... }
en fait apres j'ai un tableau de CEnvironnement dans lequel je met plusieurs objet dérivant chacun de la classe CEnvironnement.
en fait à un moment j'aimerais récupéré les environnements contenue dans le tableau et les caster, mais cela ne marche pas. Je procéde comme ceci:
mais les deux solutions me donne la meme erreur et me dise que la convertion est impossible, et je ne comprend pas vraiment pourquoi. Est-ce que quelqu'un pourrait m'apporter un peu de lumiere svp.
Merci par avance.
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 23 avril 2007 à 08:44
Erreur de compilvation ou d'exécution?
Tu n'a pas montré ta déclaration de tabEnv (logiquement: CEnvironnement* tabEnv[TABENV_COUNT];)
Si tu sais que l'objet a récupérer est un bien de type CInterieur, le dynamic_cast est inutile
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 23 avril 2007 à 09:32
l'erreur se produit à la compilation!
mais j'ai utiliser un petit truc pour résoudre mon problème, et meme si mon modéle devient alors légérement moins propre je pense que je vais garder ma solution!
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 23 avril 2007 à 12:18
Peut etre que je me trompe mais ton affaire n'a pas l'air bien penssé.
Tu as des objets de type CEnvironnement que tu veux caster en CInterieure, sachant que la class CInterieur hérite de la classe CEnvironnement.
Tes deux types d'objets sont différents malgré l'héritage, et un cast explicite n'est pas jouable.
A ta place je surchargerais le constructeur de la classe CInterieure de telle sorte qu'il soit capable d'initialiser un objet CInterieure à partir d'un objet CEnvironnement.
Ainsi tu te crées deux tableaux de taille identiques (tabEnv et tabInt) et tu remplies tabInt à partir de tabEnv.
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 23 avril 2007 à 12:33
je ne vois pas pourquoi mon héritage est mal pensé!
c'est comme si j'avais une classe fichier que je voulais spécialiser en fichier image et fichier vidéo.
si je fait un tableau de fichier, je pourrais également y mettre mes fichiers images et mes fichiers video qui sont bien des fichiers malgrès qu'ils soit légérement différent.
c'est une chose similaire que je fais ci dessus, je ne vois pas en quoi cela serait une mauvaise conception!
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."
Vous n’avez pas trouvé la réponse que vous recherchez ?
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 23 avril 2007 à 18:52
Ya pas de pb avec ce cast, mais ce qui est étrange c'est que le compilo le refuse. Enfin au lieu d'utiliser un cast C, j'utiliserais kan meme static_cast< > meme si ca revient au meme.
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 23 avril 2007 à 20:53
Je me suis mal exprimé. Ce qui ne me convient pas c'est la méthode employée. Pour ma part j'évite ce genre de pseudo souplesse. Après à chacun ses habitude.
As tu vérifié le niveau d'alertes de ton compilo ? Dois t'il gérer les warnings comme des erreurs ?
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 23 avril 2007 à 21:58
non cela n'est pas du au niveau d'alerte du compilo :)
mais de toute avec une petite ruse je m'en suis très bien sortie et tant pi si dans le fond ce n'est pas très correcte, apres tout ce n'est que pour un petit code :)
Bob...
"Vaut mieux se taire et passer pour un con, que de l'ouvrir et ne laisser aucun doute sur le sujet..."