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 :

Equivalent instanceof java


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 40
    Par défaut Equivalent instanceof java
    Bonjour,
    Quel est l'équivalent d'instance of en java ?
    Merci,

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Tu dois pouvoir t'en sortir avec typeid.

  3. #3
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Pourquoi faire ? (je sens la redéfinition de choses comme isEquals à 3km, d'où ma question)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Le dynamic_cast<> du C++, utilisé sur un pointeur, sert à la fois de instanceof et de cast qui ne lance pas d'exception en cas d'échec.
    Par contre, utilisé sur une référence, il agit comme le cast de java, et lance une exception std::bad_cast si le type ne correspond pas.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 40
    Par défaut
    Merci pour vos réponses !
    En effet j'ai essayé avec typeid et ca fonctionne.
    Pour quoi faire ?
    Et bien en fait je fais un traitement avec des éléments d'une liste. Ces éléments sont censés être tous d'un même type (non primitif) mais on ne sait jamais, je préfère tout de même vérifier ...
    J'ai regardé un exemple avec dynamic_cast et c'est similaire non ?

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Oublie C, Pascal et Java.
    Le typage du C++ est plus poussé pour ce genre de choses. On utilise les template. D'ailleurs si ce n'est pas pour un exo, utilise std::list<> si tu veux une liste chainée.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 40
    Par défaut
    Les template en C++ c'est pareil que la généricité en java non ?
    Et ce ne sont pas des listes que j'ai créé mais des listes déjà existantes, qui sont supposées contenir les mêmes éléments mais par précaution je vérifie ce qu'elles contiennent, ce qui explique pourquoi je ne peux pas utiliser les templates.

  8. #8
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Les template en C++ c'est pareil que la généricité en java non ?
    Pour faire simple, la généricité en java est un sous ensemble des templates C++ .

    Pour ce qui a été dit, tu peux effectivement utiliser typeid pour émuler instanceof.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(typeif(ma_variable) == typeid(int) )
      // ma_variable est un int
    Si tu as des pointeurs, mieux vaut faire un dynamic_cast :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MaClasse* monPtr = dynamic_cast<MaClasse*>(ma_variable);
    if(monPtr != NULL)
      // ma_variable est de type MaClasse*
    Cela dit, je ne comprends pas trop pourquoi tu as besoin de "vérifier ce que ta liste contient" ? C'est un truc codé "C-style" avec des void* dans tous les sens ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 40
    Par défaut
    Ok, merci !
    Dans ce cas j'opterai pour le dynamic_cast alors.
    J'ai besoin de vérifier, car ce que retourne ma liste est de type (void *), ce qui fait qu'il est nécessaire de caster avec mon type. Tous les objets sont censés être du même type mais c'est parce qu'en cours, on me répète de toujours vérifier les cas d'erreur .

    [EDIT]
    Ben en fait ça marche pas...
    Ca me retourne : "Le type void n'est pas une classe définit avec des fonctions virtuelles"
    Je suis sous Borland ça y change quelque chose ?

  10. #10
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    On ne peut pas utiliser dynamic_cast avec void*: Il faut au moins l'utiliser sur une classe, contenant des fonctions virtuelles.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Contrairement aux templates, tu ne pourras jamais rien vérifier avec des void*...

    Tu es obligé d'utiliser cette solution C? (comprendre: as-tu le droit de mettre aux oubliettes cette approche antédiluvienne pour faire vraiment du C++?)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 40
    Par défaut
    Oé je suis malheureusement obligé d'utiliser cette solution (quoique je vais voir quand même parce que ça m'embête de laisser ça comme ça ... ).
    Pour l'instant je vais laisser ça sans vérifier ce que je récupère, dommage.
    Merci pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Equivalent Applet Java en .Net
    Par Aurazed dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 27/04/2009, 17h33
  2. equivalent en java de XMLsocket
    Par orelero dans le forum Général Java
    Réponses: 4
    Dernier message: 31/08/2006, 15h03
  3. Equivalent des Java Hashmap en Visual c++
    Par Sallie dans le forum MFC
    Réponses: 10
    Dernier message: 12/05/2006, 10h20
  4. Equivalent des Java Hashmap en c++
    Par Sallie dans le forum C++
    Réponses: 4
    Dernier message: 11/05/2006, 17h58
  5. [JNDI] Equivalent avec Java Web Start ?
    Par cameleon2002 dans le forum Java EE
    Réponses: 8
    Dernier message: 18/09/2003, 18h55

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