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 :

V�rifier si un objet est une instance d'une classe


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 23
    Par d�faut V�rifier si un objet est une instance d'une classe
    Bonjour � tous...

    Je cherche une fonction qui v�rifie si un objet est une instance d'une classe pass� en param�tre, ou qui renvoie la classe d'un objet pass� en param�tre, un peut � la mani�re du instanceOf() de Java.

    Merci d'avance pour votre aide.

  2. #2
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Dans quelle situation as tu besoin de faire �a ? Si l'instance est passee en param�tre, alors tu connais son tpe, du moins de base ?
    Sinon y'a pas d'introspection en C++. Tu peux utiliser dynamic_cast pour tenter des conversions ou bien jouter avec le RTTI et typeid.

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    D�cembre 2002
    Messages
    534
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 534
    Par d�faut
    Bonsoir,

    Utilisez typeid( myclass ).

    Cordialement.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 23
    Par d�faut
    Un exemple : supposons une interface Joueur, impl�ment�e en deux classes : Humain et Machine... Bien s�r, je cr�e deux pointeurs vers Joueur, mais l'objet point� peut tr�s bien �tre Humain ou Machine, vu qu'ils impl�mentent Joueur. Le but est donc de savoir si le Joueur est en fait un Humain ou une Machine...

    En ce qui concerne le typeid, j'avais trouv� cela apr�s quelques recherches, mais j'ai du mal � saisir son fonctionnement, et le type_info qui va avec...

  5. #5
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Une solution classique consiste � cr�er une fonction virtuelle pure "type()" dans Joueur que les classes filles supplantent afin de renvoyer le type de la classe ce qui permet de faire un dynamic_cast voire un static_cast derri�re.
    Sinon dynamic_cast avec test de r�sultat.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 23
    Par d�faut
    Merci, je crois que ta solution reste la plus simple et la moins couteuse...

  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 : 51
    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
    Pour l'exemple des �checs, le but est justement de ne pas savoir qui est l'humain et qui est la machine. Tout ce qu'on demande � ces classes, c'est de savoir produire le coup suivant.

    Tout �a pour dire que m�me si le downcast (d'un type de base vers un type d�riv�) est possible en C++, c'est souvent une mauvaise id�e (pareil qu'en Java, d'ailleurs). Pourquoi ? Par exemple, si on d�cide plus tard de cr�er un joueur MachineQueMemeLoicPeutBattre, si on n'a pas fait de downcast, il suffit de cr�er cette classe, et de changer le bout de code qui cr�e l'objet, c'est tout (m�me ce dernier point peut �tre r�duit par l'interm�diaire de factories), c'est tout. Si on a fait du downcast, on doit parcourir l'ensemble du code � la recherche de ces downcasts pour ajouter la nouvelle classe partout.
    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.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Utiliser une m�thode d'une instance, dans une callback
    Par qdaemon_fr dans le forum Langage
    R�ponses: 3
    Dernier message: 18/04/2014, 18h09
  2. [ATL] Utiliser une instance d'une r�gle dans une autre r�gle
    Par sacha33 dans le forum Eclipse Modeling
    R�ponses: 0
    Dernier message: 02/06/2013, 23h41
  3. R�ponses: 3
    Dernier message: 07/12/2009, 07h35
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est coch�e
    Par JessieCoutas dans le forum Macros et VBA Excel
    R�ponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    R�ponses: 8
    Dernier message: 21/06/2007, 13h48

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