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 :

Utilisation de cast dans de l'héritage


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 25
    Points : 22
    Points
    22
    Par défaut Utilisation de cast dans de l'héritage
    Bonjour,

    je vous explique mon problème :

    J'ai un programme c++ fait avec turbo c++ 3.0.
    J'ai Une classe client contenant l'adresse du client, sa ville et son code postal.
    Ensuite je veux faire deux classe héritant de la classe client : une classe client_entreprise (avec la raison social en particulier) et une classe client_particulier (nom, prénom).

    Ensuite j'ai une liste chainée d'objet des classes client_entreprise et client_particulier.

    On m'a dit d'utiliser "cast" pour retrouver le type d'un client dans la liste chainées, mais je ne vois pas du tout a quoi cela peut me servir.
    Pouvez vous m'éclairer la dessus?

    merci d'avance
    Jean-Baptiste MARION

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Le dynamic_cast, sauf cas précis et rares, est en général à éviter. Donc si tu ne sais pas quoi en faire, à la limite c'est pas plus mal.
    Il y a sur ce forum un topic qui débat de l'utilisation de dynamic_cast, tu peux le retrouver avec la recherche avancée si cela t'interesse.

  3. #3
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    le cast te permettra de "transformer" un objet client en sous-classe : client_entreprise ou client_particulier, mais je ne pense pas que cela puisse te permettre d'identifier le type de la sous-classe.
    Pour ton problème, tu peux :
    - utiliser les RTTI pour connaitre dynamiquement le type des objets;
    - utiliser un attribut dans la classe de base qui t'indique le type de la sous-classe;
    - utiliser le polymorphisme et faire en sorte de ne pas être dépendant de la sous-classe.

    La 3ème solution est la plus élégante (et recommandée par Bjarne Stroustrup lui-même dans son bouquin) mais elle réclame une bonne conception orientée objet.

  4. #4
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 180
    Points
    180
    Par défaut
    C'est pas tres propre et c'est une source de problemes. Sinon pour caster un type de base en type herité :

    dynamic_cast<> pour caster à la volée, au runtime
    static_cast<> pour caster au build...

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    De plus, je ne suis pas certain que turbo C++ 3.0 supporte le dynamic_cast, c'est quand même très vieux comme compilateur...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  2. Utilisation fonction définie dans un .Dll
    Par jeab. dans le forum Windows
    Réponses: 5
    Dernier message: 23/03/2004, 16h23
  3. Réponses: 3
    Dernier message: 11/03/2004, 10h58
  4. impossible d'utiliser ma fonction dans un insert
    Par caramel dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/04/2003, 15h04
  5. Utilisation de Pointeurs dans API windows
    Par Drooxy dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 13/03/2003, 22h39

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