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 :

Recuperer le type d'une class polymorphe pointée par un smart pointer (boost)


Sujet :

C++

  1. #1
    Membre très actif
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Par défaut Recuperer le type d'une class polymorphe pointée par un smart pointer (boost)
    Bonjour,

    J'ai deux class polymorphes Moto & Voiture héritière de véhicule.
    Je souhaite faire un test sur un pointeur intelligent de type véhicule (boost::shared_ptr) pour savoir sur quel objet il point.
    un truc du genre:

    if (type(Vehicule_ptr) == type(Voiture))
    print "Je suis une voiture";


    Si vous connaissez la méthode.

    Merci !

  2. #2
    Membre très actif
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Par défaut
    Ha c'est bon, trouvé:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #include <typeinfo>
    vehicule * v1 = new moto(2);
     
    if(typeid(*v1)==typeid(moto)) cout << "C'est une moto" << endl;
    A voire maintenant sur les smart pointeurs

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 472
    Par défaut
    Sauf cas exceptionnel, avoir besoin de cette fonctionnalité est un symptôme d'un gros problème de conception.

    Vous ne devriez pas avoir besoin de la bidouille à base de dynamic_cast

    http://en.cppreference.com/w/cpp/language/dynamic_cast
    Pour que ça marche, il faut activer le RTTI et que les classes aient une v_table (au moins une fonction virtuelle, mais qui dit héritage dit destructeur virtuel).

    P.S.:Oui, je sais que je viens de lui donner un bazooka pour qu'il s'arrache la jambe avec.

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

Discussions similaires

  1. Recuperer l'auteur d'une classe
    Par bourbaki2003 dans le forum Langage
    Réponses: 3
    Dernier message: 29/05/2006, 23h40
  2. Trouver le Type d'une classe template dynamiquement ?
    Par Serge Iovleff dans le forum Langage
    Réponses: 3
    Dernier message: 23/09/2005, 16h48
  3. Réponses: 11
    Dernier message: 31/01/2005, 17h48
  4. Déterminer le type d'une class dérivée
    Par LDDL dans le forum MFC
    Réponses: 3
    Dernier message: 10/12/2004, 17h36
  5. [Debutant][Collection] Création d'un vecteur de type d'une classe
    Par Tao® dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 22/04/2004, 17h06

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