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 :

template, héritage et std:deque


Sujet :

Langage C++

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut template, héritage et std:deque
    Bonjour,

    Je viens de définir une classe template comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    template <class S, class T>
    class A {
    ...
    }
    Puis j'ai définit une seconde classe comme deque de la précédente:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    template <class S, class T>
    class B : public deque<A<S, T> > {
     ...
    }
    Or le compilateur n'accepte pas qu'on écrive

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    B<S, T>::iterator i;
    Dans un contexte de template<class S, class T>.

    Voyez-vous une explication simple?
    Merci d'avance.

    ps: le truc étonnant est que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    B<double, double>::iterator i;
    est correctement accepté par le compilateur...

  2. #2
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Pourquoi hériter d'un deque ??

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Je veux pouvoir simplement construire cette liste à partir d'autres objets (méthodes spécifiques) et je pense aussi ajouter quelques autres données membres.
    Ceci dit, même quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::deque<A<S, T> >::iterator j;
    ne marche pas, pourtant dans un contexte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    template<class S, class T>
    Aurais-je loupé quelque chose?

  4. #4
    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

  5. #5
    Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Je pensais naïvement que c'était inutile dans ce cadre-là.
    Effectivement, il faut toujours écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typename B<S, T>::iterator i;
    pour que ça marche.

    Merci, et désolé pour cet n-ième question à cause de ce problème.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 589
    Points
    41 589
    Par défaut
    Bonjour,
    J'ai eu l'impression aussi que les typedefs dans un template n'étaient pas hérités...
    Est-ce normal ou bien est-ce un bug de Visual 8?

  7. #7
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Les typedefs, méthodes, variables, ... de la classe parente d'une classe template ne sont pas accessibles directement, il faut spécifier qu'on cherche dans la classe, soit avec un this->, soit en préfixant avec le nom de la classe parente, soit en mettant un using ...
    C'est le comportement standard, GCC l'impose depuis la 3.4

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 589
    Points
    41 589
    Par défaut
    Merci.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/01/2008, 00h39
  2. Template + Héritage
    Par richard_sraing dans le forum Langage
    Réponses: 4
    Dernier message: 30/07/2007, 14h34
  3. [STL] std::deque, reserve() ?
    Par camboui dans le forum SL & STL
    Réponses: 10
    Dernier message: 10/07/2007, 11h29
  4. Templates + Héritage + Allocation dynamique
    Par bouba dans le forum C++
    Réponses: 2
    Dernier message: 26/04/2007, 18h56
  5. Template, héritage multiple et redéfinition
    Par Paul Atreide dans le forum Langage
    Réponses: 5
    Dernier message: 31/10/2006, 15h00

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