IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

problème de cast


Sujet :

C++

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 1
    Par défaut problème de cast
    Bonjour, je coince sur un problème depuis hier soir 20h... (avec une nuit de dodo entre-temps)
    J'ai fait un bon nombre de recherche sur le net, sans trouver la réponse à mon problème.

    1: J'utilise Visual studio 2005 (je suis obligé, c'est pour un projet)

    2: Voici la partie de code qui pose problème:

    Figure fig = _listeDeFigures.getIeme(choix);
    GroupeFigure grp = static_cast<GroupeFigure>(fig);

    GroupeFigure hérite de Figure
    _listeDeFigures.getIeme(choix) renvoie une Figure, qui peut être un Carre, un Cercle, ou pour mon exemple un GroupeFigure

    Dans mon cas, je sais que _listeDeFigures.getIeme() va renvoyer un GroupeFigure, mais qui a été enregistré dans la liste sous forme de Figure.

    Le cast me donne cette erreur :
    error C2440: 'static_cast' : cannot convert from 'Figure' to 'GroupeFigure'
    J'ai essayé avec les autres types de cast, même avec le reinterpret_cast (considéré comme étant le plus dangereux à utiliser), mais l'erreur est toujours là..

    Si vous pouvez m'aider à résoudre mon problème, je vous en serai grandement reconnaissant

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Bonjour,
    tu t'es pas trompéquelque part??
    ce ne devait pas plustot etre ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Figure & fig = _listeDeFigures.getIeme(choix);
    GroupeFigure grp = static_cast<GroupeFigure&>(fig);
    que retourne exactement _listeDeFigures.getIeme(choix); ?
    pour que ton code fonctionne il faudrait que Figure implement
    operator GroupeFigure (). Et je ne pense pas que c'est ce que tu veut

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Par défaut
    Les héritages s'utilisent au travers de pointeurs ou de références or la ton groupe de figure tu le récupère dans un objet de type Figure, donc tu n'as plus un groupe de figure, tu ne pourra plus convertir cette figure en Groupe de figure car les infos complémentaires sont perdues.

  4. #4
    Membre éprouvé
    Inscrit en
    Décembre 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 103
    Par défaut
    Est-ce que tu pourrais nous donner le code source de tes classes, ça pourrait être utile pour trouver le problème.

  5. #5
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Citation Envoyé par Gandalf Voir le message
    Les héritages s'utilisent au travers de pointeurs ou de références or la ton groupe de figure tu le récupère dans un objet de type Figure, donc tu n'as plus un groupe de figure, tu ne pourra plus convertir cette figure en Groupe de figure car les infos complémentaires sont perdues.
    C'est vrai, comme le dit aussi Mongaulois tu dois te tromper quelque part.

    Si getIeme() renvoie un objet concret (pas une référence ou pointeur), alors cet objet sera une Figure et c'est tout, en aucun cas un GroupeFigure. Il faudrait que tu récupère un pointeur ou une référence pour faire ton cast vers une classe fille.

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    sauf si
    Figure implemente la fonction

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    operator GroupeFigure()
    {
    }
    et la....
    j'y croi a mort ou alors il y as surement un problème de conception

  7. #7
    Membre éprouvé
    Inscrit en
    Décembre 2006
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 103
    Par défaut
    Ou ne pas passer par un Figure ...

Discussions similaires

  1. [CASTS]problème de cast de Time
    Par DeVoN dans le forum Langage
    Réponses: 7
    Dernier message: 22/02/2006, 17h24
  2. [JDBC Driver][JSTL] Problème de cast de données
    Par GyLes dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/09/2005, 10h00
  3. problème de cast!
    Par LaseLiep dans le forum Langage
    Réponses: 3
    Dernier message: 03/06/2005, 09h30
  4. Problème de cast/serialization/externalization ?
    Par Linlin dans le forum CORBA
    Réponses: 1
    Dernier message: 06/12/2004, 16h46
  5. [C#] Problème de casting de @IDENTITY
    Par bilb0t dans le forum Accès aux données
    Réponses: 7
    Dernier message: 03/09/2004, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo