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 :

template template et héritage


Sujet :

C++

  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut template template et héritage
    Bonjour,

    Je continue doucement mon apprentissage des templates et je m'interesse maintenant aux templates de templates.

    Prenons l'exemple ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    template <typename T> class Vector;
    template <template <typename> class V, class T> class VectorList;
    template <typename T> class DerivedVectorList: public VectorList<Vector<T>, T>{};
    Je veux donc implémenter un premier template Vector qui est un conteneur générique.
    Je veux ensuite implémenter un conteneur de conteneur générique VectorList.

    Je sèche sur la façon de réaliser un héritage (DerivedVectorList) de mon VectorList. Mon compilo (gcc 4.4.5 sur linux) me renvoie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    type/value mismatch at argument 1 in template parameter list fortemplate<template<class> class V, class T> struct VectorList’
    expected a class template, got ‘Vector<T>’
    quelqu'un aurait une idée ?

    merci d'avance

    P.S.: pour une raison que j'ignore, je ne peux plus utiliser typename mais seulement class dans un template template. Je ne sais pas si c'est mon compilo ou la norme... ça me gène pas forcément, je trouve juste ça bizarre.

  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
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Une fois instanciée, Vector<T> n'est plus une classe template. C'est pour ça qu'il râle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    template <typename T> class Vector;
    template <template <typename> class V, class T> class VectorList
    {
    typedef V<T> conteneur_type;
    };
    template <typename T> class DerivedVectorList: public VectorList<Vector, T>{};

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    merci

    le message de mon compilo est donc parfaitement clair comme quoi c'est toujours une erreur humaine

    je garde le topic ouvert au cas où j'ai un autre soucis.

    P.S: c'est bon, tout fonctionne. Si j'ai un autre problème, ce sera sur un autre sujet. Merci encore pour la rapidité de ta réponse.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Citation Envoyé par kango Voir le message
    Je veux donc implémenter un premier template Vector qui est un conteneur générique.
    Il me semble que ça a déjà été fait par des gens très bien.

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

Discussions similaires

  1. Problème avec template template template
    Par oodini dans le forum Langage
    Réponses: 6
    Dernier message: 23/11/2012, 14h40
  2. Template abstrait et héritage
    Par floof dans le forum Langage
    Réponses: 4
    Dernier message: 16/12/2009, 10h53
  3. Template, Singleton et Héritage
    Par al2000 dans le forum C#
    Réponses: 3
    Dernier message: 19/04/2009, 20h21
  4. probléme : template multiple et héritage simple.
    Par laetmo dans le forum Langage
    Réponses: 1
    Dernier message: 03/08/2006, 02h44
  5. template<template<>>
    Par joker34 dans le forum C++
    Réponses: 7
    Dernier message: 25/01/2006, 09h45

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