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 et classe hérité


Sujet :

Langage C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2011
    Messages : 33
    Points : 23
    Points
    23
    Par défaut template et classe hérité
    salut, j'ai une classe de ce genre :
    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
     
    template <typename T>
    class ptr
    {
        T* m_ptr;
    public:
        ptr()
            : m_ptr(NULL)
        {}
        ptr(T* p)
            : m_ptr(p)
        {
        }
        ptr& operator=(const ptr& p)
        {
            m_ptr = p.m_ptr;
            return *this;
        }
    }
    et je voudrais faire ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class a
    {
    }
    class b : public a
    {
    }
    ptr<a> ptr1;
    ptr1 = ptr<b>(new b());
    mais le compilo veut pas => "binary '=' : no operator found which takes a right-hand operand of type 'ptr<T>' (or there is no acceptable conversion)"

    je suis sous vs2010

    quelqu'un a une idée?

  2. #2
    En attente de confirmation mail

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Points : 3 311
    Points
    3 311
    Par défaut
    Il te faut un constructeur pour ptr<A> depuis ptr<B>. Quelque chose comme ca (en plus) dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    template<class T>
    struct ptr
    {
      template<class U>
      ptr(const ptr<U>&);
      //ect
    };
    Et rajouter l'opérateur d'affectation depuis un ptr<U> aussi.

    Il faut aussi écrire les versions "classiques" si celles générées par le compilo ne vont pas (les versions template ne les prennent pas en compte).

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2011
    Messages : 33
    Points : 23
    Points
    23
    Par défaut
    oué en effet, ca marche parfaitement merci beaucoup !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/07/2007, 18h18
  2. VB.NET Couleur d'un onglet TabPage depuis une classe hérité
    Par vincnet68 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/05/2007, 13h42
  3. Méthode template dans classe non template ?
    Par shenron666 dans le forum Langage
    Réponses: 12
    Dernier message: 04/09/2006, 17h50
  4. Utilisation de templates et classe en PHP?
    Par wkd dans le forum Langage
    Réponses: 1
    Dernier message: 01/09/2006, 15h36
  5. Template et classe "amie" ?
    Par tintin72 dans le forum Langage
    Réponses: 21
    Dernier message: 11/07/2006, 22h50

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