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] utilisation d'un patron de classe dans une autre classe


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 42
    Par défaut [Template] utilisation d'un patron de classe dans une autre classe
    Salut
    J'ai une classe nommée Matrice
    et un patron de classe template <class T>
    donc je vais remplir ma matrice de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #include "Matrice.h"
    #include "CVector.h"
    void Matrice::add(CVector<int> x)
    {
    ...
    }
    j'ai utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CVector<int> m_cont[100];
    comme attribu dans la classe Matrice

    mais ça pas marché .
    merci de m'aider

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Par défaut
    Là tu créés un tableau de 100 vecteurs de int. Je pense que pour ta matrice tu veux plutôt simplement:

    CVector<int> m_cont;
    Je sais pas ce qu'est CVector, mais si c'est un vecteur maison je te conseillerais très très très fortement d'utiliser std::vector.

  3. #3
    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
    Par défaut
    Bonjour,
    Le code suivant fonctionne chez moi:
    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
    template<class T>
    class CVector
    {
    };
     
    class Matrice
    {
    public:
       void add(CVector<int> x);
    protected:
       CVector<int> m_cont[100];
     
    };
    void Matrice::add(CVector<int> x)
    {
       m_cont[0]=x;
    }
     
     
    int main(void)
    {
       Matrice m;
       CVector<int> v;
       m.add(v);
       return std::cin.get();
    }
    Donc, quel est ton problème?

  4. #4
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 42
    Par défaut
    mon probleme qu'il y a des erreurs au compilation

  5. #5
    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
    Par défaut
    Peux-tu fournir le code qui pose problème.

  6. #6
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 42
    Par défaut
    voici tous le code dans le dossier TP2.
    J'utilise code blocks comme editeur
    merci
    Fichiers attachés Fichiers attachés
    • Type de fichier : rar TP2.rar (165,0 Ko, 58 affichages)

  7. #7
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 42
    Par défaut Message déplacé par Poukill - Suite
    salut
    j'ai un patron de classe nommé CVector
    //CVector.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    template<Class T>
    class CVector{
    ....
    };
    et j'ai une classe nommé Matrice dont j'ai:
    //Matrice.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class Matrice{
    public:
    ...
    void add(CVector<T>);  
    CVector<T> getcont(int); 
    ...
    private:  
    CVector<T> m_cont[100]; comme attribut
    ...
    };
    Mais au niveau du compilation il y a des erreurs:
    C:\Documents and Settings\fourati\Bureau\houcem\COURS\TP CPOO\TP2\Matrice.h|13|error: `T' was not declared in this scope|
    C:\Documents and Settings\fourati\Bureau\houcem\COURS\TP CPOO\TP2\Matrice.h|13|error: template argument 1 is invalid|
    .......

    Merci de m'aider

  8. #8
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Tu m'as l'air d'avoir quelques difficultés avec les template...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Ne compile pas
    void add(CVector<T>);
    Comment veux-tu qu'il compile si tu ne lui spécifie pas le paramètre template T ?
    Soit ta classe matrice est aussi template, soit la méthode add devient template
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    template <typename T>
    void add(CVector<T>);

    Mais à mon avis ce que tu veux, c'est ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    template <typename T>
    class Matrice{
    public:
    ...
    void add(CVector<T>);  
    CVector<T> getcont(int); 
    ...
    private:  
    CVector<T> m_cont[100]; comme attribut
    ...
    };

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/04/2011, 10h32
  2. utilisation d'une variable d'une class dans une autre class
    Par the watcher dans le forum Langage
    Réponses: 7
    Dernier message: 31/08/2010, 14h01
  3. Utilisation des méthodes de classe dans une autre classe
    Par ChriGoLioNaDor dans le forum C++
    Réponses: 4
    Dernier message: 28/07/2007, 15h10
  4. utiliser les attribut d'une classe dans une autre classe
    Par kaissaoui dans le forum Langage
    Réponses: 11
    Dernier message: 18/07/2007, 15h13
  5. Réponses: 3
    Dernier message: 25/12/2006, 20h45

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