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 :

Souci de la forme: A *a = new B;


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Par défaut
    La solution serait donc dynamic_cast :il va renvoyer NULL si pBase[0][2] n'est pas vraiment un CMaDerivee (rien ne t'en assure).
    le dynamic_cast n'est pas nécessaire dans son cas car il connaît très bien la nature de l'objet instancié. Ca aurait été nécessaire dans le cas d'un passage de paramètre dans une méthode dont il ne connaîtrait pas à coup sur le type de l'objet.

  2. #2
    Membre chevronné
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Par défaut
    En effet, tu ne pourras pas la récupérer ....
    Mais justement ce n'est pas classe de mélanger des types différents dans un tableau si on veut faire des traitements différents sur ceux-ci.

    Tu peux avoir un tableau de Personnes et Eleves et Profs si tu n'accedes qu'a des infos communes. Ou si tu appelles des méthodes définies dans Personnes et qui ne font pas la même chose pour leurs classes dérivées (par exemple, l'affichage).

    Mais on ne mélange pas (enfin dans l'idéal) des Personnes et des Eleves si c'est pour faire à chaque élément:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Si c'est un eleve
       faire ceci
    Sinon
        faire autre chose
    Voilà, j'espère que ca t'aura éclairé

  3. #3
    Membre chevronné
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Par défaut
    Citation Envoyé par ep31
    La solution serait donc dynamic_cast :il va renvoyer NULL si pBase[0][2] n'est pas vraiment un CMaDerivee (rien ne t'en assure).
    le dynamic_cast n'est pas nécessaire dans son cas car il connaît très bien la nature de l'objet instancié. Ca aurait été nécessaire dans le cas d'un passage de paramètre dans une méthode dont il ne connaîtrait pas à coup sur le type de l'objet.
    Euh, justement, je ne suis pas sur que son tableau ne contienne que des Eleve ...
    Mais certaines de ces personnes sont des élèves et possèdes l'attribut note.
    Donc il pourrait se retrouver à forcer le cast en Eleve alors qu'il s'agit d'une simple personne....

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Par défaut
    J'ai lu la FAQ pas encore ton site et je sais pourquoi faut pas le faire maintenant mais pas comment le faire sans utiliser le dynamic_casting qui semble pas bien si je comprends bien!!
    Le static_cast et le dynamic_cast peuvent être utilisés (le dernier dans le cas où tu ne connais pas le type d'objet à l'écriture de ton prog).
    Ce sont les const_cast et les reinterpret_cast qui sont à éviter.
    T'as un très bon bouquin qui explique tout ça et que je trouve vraiment bien : "Pour mieux développer avec C++ : Design Patterns, STL, RTTI et Smart Pointers" de Geron et Tawbi.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 112
    Par défaut
    Dans mon cas, c'est vrai que je sais exactement qui est quoi. Donc le dynamique me semble peut adapter.
    et la solution de ep31 marche

    Pour l'exemple donner, n'ayant pas de contexte autour, on peut en donner toutes les interprétations.

    Mais de toute façon, j'ai bien compris que j'étais partie sur le chemin de la mauvaise programmation et que dois revenir dans la lumière

    Merci à tous

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 112
    Par défaut
    Citation Envoyé par ep31
    J'ai lu la FAQ pas encore ton site et je sais pourquoi faut pas le faire maintenant mais pas comment le faire sans utiliser le dynamic_casting qui semble pas bien si je comprends bien!!
    Le static_cast et le dynamic_cast peuvent être utilisés (le dernier dans le cas où tu ne connais pas le type d'objet à l'écriture de ton prog).
    Ce sont les const_cast et les reinterpret_cast qui sont à éviter.
    T'as un très bon bouquin qui explique tout ça et que je trouve vraiment bien : "Pour mieux développer avec C++ : Design Patterns, STL, RTTI et Smart Pointers" de Geron et Tawbi.
    je crois bien qu'un tel bouquin va s'imposer sérieusement là.

  7. #7
    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 : 50
    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
    Par défaut
    Citation Envoyé par ep31
    Le static_cast et le dynamic_cast peuvent être utilisés (le dernier dans le cas où tu ne connais pas le type d'objet à l'écriture de ton prog).
    Ce sont les const_cast et les reinterpret_cast qui sont à éviter.
    Tous les cast sont à éviter. Ce qu'il n'empêche pas qu'il existe des cas où leur usage est légitime. Statisticopifomètriquement, je suis d'accord que les const_cast et reinterpret_cast sont moins souvent légitimes que static_cast ou dynamic_cast, et souvent pour s'interfacer à du code qu'on ne peut pas modifier.

    Il n'en restent pas moins que tous peuvent être la bonne réponse à une situation, mais qu'il faut être prêt à justifier de l'emploi de chaque cast.
    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.

  8. #8
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    J'aime pas non plus les cast, mais il y a des momenst où on ne peut rien faire sauf modifier du code de 10 ans d'âge alors que c'est pas notre boulot et que le patron ne veut pas qu'on y touche - genre interfacer des vieilles fonctions avec des char* avec du C++ où on utilise des streams -

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XL-2007] soucis dans USER FORM
    Par alf049 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/06/2012, 14h15
  2. [2.x] Form différent en new et edit
    Par jfsenechal dans le forum Symfony
    Réponses: 4
    Dernier message: 22/11/2011, 12h22
  3. Souci dans la forme !
    Par Erolgamer dans le forum Merise
    Réponses: 2
    Dernier message: 13/03/2010, 09h26
  4. [HTML 4.0] souci avec imbrication form et table
    Par rapanui dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/06/2009, 20h04
  5. [Forms 10g] When-New-Form-Instance Niveau Bloc
    Par star dans le forum Forms
    Réponses: 6
    Dernier message: 25/03/2006, 21h22

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