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

SL & STL C++ Discussion :

[Templates]héritage de templates,operateurs vertuels pur


Sujet :

SL & STL C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Points : 24
    Points
    24
    Par défaut [Templates]héritage de templates,operateurs vertuels pur
    Bonjour,
    j'ai un probléme avec des operateurs vertuelles purs dans des classes meres. les classes filles implementent bien ces opérateurs mais avec des paramétres qui sont des sous classes de ceux que j'ai mis dans la version vertuelle pure dans la classe mere. le compilateur me dis que j'ai pas redefini ces fonctions à cause de l'incompatibilité des parametres.
    voici classe mere:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    template < class EOT > class moPath
    {
    public:
      virtual bool update(moPRMove<EOT> &__move)=0; //c'est la que ça pose probléme,
     
    };
    voici la classe fille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class moQ3APPath :public moPath <Q3AP>
    {
    bool update(Q3APPRMove &__move){
    return 0;
    }
    le compilo dis que update de moPath n'est pas definie dans moQ3APPath, et c'est visiblement car il pense que le parametre moPRMove<EOT>est diferent de Q3APPRMove. or voici la declaration de cette derniére:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    class Q3APPRMove :public moPRMove<Q3AP>
    {}
    ils sont de meme type de base au moins. est ce que ça ce fait pas?
    merci bien

  2. #2
    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 : 49
    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
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par Gotmere Voir le message
    le compilo dis que update de moPath n'est pas definie dans moQ3APPath, et c'est visiblement car il pense que le parametre moPRMove<EOT>est diferent de Q3APPRMove. or voici la declaration de cette derniére:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    class Q3APPRMove :public moPRMove<Q3AP>
    {}
    ils sont de meme type de base au moins. est ce que ça ce fait pas?
    merci bien
    Ils sont donc bien différents. L'un dérive de l'autre. Si Q3APPRMove n'était qu'un typedef pour moPRMove<Q3AP>, ça marcherais. Si le C++ acceptais la covariance sur les arguments, et pas seulement sur les types de retour, ça marcherais aussi (mais d'autres choses moins).

    Si tu veux customiser moPRMove<Q3AP> par rapport au comportement de base du template, pourquoi ne pas envisager la spécialisation plutôt que la dérivation ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    merci, je ne savais pas que c'est interdit.
    j'ai aussi pensé à utiliser les typedef au lieu de l'héritage ou alors la specialisation mais le probléme c'est que j'ai besoin de rajouter plein de choses à la classe specialisée et je ne sais pas encore est ce possible.
    j'ai réglé le probléme en remplaçant les noms de classe mere de toutes les fonction vertuelles, et de le remplacer par un parametre template le plus possible. et ça marche

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

Discussions similaires

  1. Réponses: 22
    Dernier message: 17/07/2008, 09h51
  2. Template, héritage multiple et redéfinition
    Par Paul Atreide dans le forum Langage
    Réponses: 5
    Dernier message: 31/10/2006, 14h00
  3. template, héritage et std:deque
    Par jmtrivial dans le forum Langage
    Réponses: 7
    Dernier message: 27/09/2006, 15h08
  4. Héritage et Templates
    Par rulianf dans le forum C++
    Réponses: 5
    Dernier message: 26/10/2005, 17h09
  5. héritage et template STL
    Par jevito dans le forum Langage
    Réponses: 5
    Dernier message: 21/09/2005, 11h15

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