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 :

Heritage et cast


Sujet :

C++

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut Heritage et cast
    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:

    CInterieur *in = (CInterieur *) tabEnv[0];
    ou
    CInterieur *in = dynamic_cast<CInterieur *>( tabEnv[0] );

    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.

  2. #2
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    question con ton tableau c'est du type CEnvironnment * ou bien CEnvironnement** ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut
    en fait c'est un vector

  4. #4
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    c'est quoi l'erreur exactement ? est ce bien un vector<CEnvironnement *> ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut
    oui aucun doute la dessus, l'erreur est la suivante:
    error: invalid conversion from `CEnvironnement*' to `
    CInterieur*'

  6. #6
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    beuh c'est bizarre ca. Il est long ton code ? tu peux poster une archive ?

  7. #7
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut
    oui le code est assez long, je vais voir pour poster une archive dans la journée.

  8. #8
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Simple question: tu possède donc des objets dans un tableau via un pointeur vers la classe la plus générale. C'est classique et dans le "moule" orienté objet.
    Pourquoi faire du downcasting, puisque le polymorphisme te permet via ton pointeur global d'appeler tes classes dérivées (à condition bien sûr que les fonctions membres soient virtuelles)?

Discussions similaires

  1. cast et heritage
    Par totoche dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 08/04/2008, 19h17
  2. pb cast heritage
    Par DEVfan dans le forum C++
    Réponses: 9
    Dernier message: 14/03/2008, 10h50
  3. [heritage] cast
    Par r0d dans le forum C++
    Réponses: 2
    Dernier message: 24/04/2006, 15h36
  4. cast et heritage
    Par BigNic dans le forum C++
    Réponses: 11
    Dernier message: 30/03/2006, 08h07

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