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

Langage C++ Discussion :

exception en template avec des typeid


Sujet :

Langage C++

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut exception en template avec des typeid
    Bonsoir,
    Voici la situation ci dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    // header
    class A
    {
    public: A() {}
             int VarA;
    };
     
    class B 
    {
    public: B() {}
             int VarB;
    };
     
    template < class T >
    class C
    {
    public:   void fonction();
     
    };
     
    template < class T >
    void C<T>::fonction()
    {
            A *InstanceA;
            if ( typeid(this) == typeid(InstanceA) )
            {
                    this->VarA = 0; // Valeur quelconque...
            }
    }
    Je sais que ca parait normal que l'erreur fasse surface mais ya t-il un moyen de la contourner ... si je passe dans la meme fonction avec une instance de type B, la condition ne sera de toute facon pas vrai.
    Et si c'est pas faisable comment faire pour éviter d'écrire du code inutilement ?!
    Merci d'avance !

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 279
    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 279
    Points : 11 015
    Points
    11 015
    Par défaut
    En dehors que cela sens le mauvais design, je ne comprends pas ce que tu cherches à accomplir.
    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...

  3. #3
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Comme Luc, j'ai des doutes sur la qualite du design. Tu pourrais eventuellement utiliser dynamic_cast en ajoutant une fonction virtuelle au bon endroit pour que le RTTI soit disponible.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    Et bien disons que le compilateur appelle la fonction automatiquement, si j'appelle la fonction "fonction" avec une instance A et une instance B, la A marchera mais la B ca passera pas, je crois que ca vous avez compris .

    Avec les template on doit faire appel obligatoirement dans les fonctions template à des fonctions et variables reconnues par toutes les instances de classes qui y passent ?
    Celà signifirait que la moindre exception nous empêcherait de utiliser le template et nous obligerait à faire la même fonction x.fois avec juste un détail de changer?

  5. #5
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Ce genre de variation se traite entre autres par des traits.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Tu peux spécialiser ton template pour A et pour B si c'est ça que tu veux.
    Boost ftw

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    Loufoque, comment on fait pour spécialiser le template?

    Jean-Marc, comment utiliser les traits?

    Ce serait gentil de me le dire.

  8. #8
    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 : 40
    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
    Citation Envoyé par Julien_C++
    Loufoque, comment on fait pour spécialiser le template?
    C'est dans la

    Citation Envoyé par Julien_C++
    Jean-Marc, comment utiliser les traits?
    Ce sera dans la dans quelques jours

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Points : 64
    Points
    64
    Par défaut
    Oh ! J'ai de la chance !
    Merci à tous, et bonne année avant tout

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 23/12/2009, 19h22
  2. Template avec des pointeurs
    Par snyfir dans le forum Langage
    Réponses: 5
    Dernier message: 22/10/2009, 20h04
  3. Réponses: 7
    Dernier message: 13/02/2007, 15h09
  4. Réponses: 6
    Dernier message: 29/11/2006, 11h56
  5. Créer un type matrice avec des templates
    Par souading3000 dans le forum C++
    Réponses: 2
    Dernier message: 15/06/2006, 11h24

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