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++

  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 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 pourrais pas plutôt poster un exemple minimal qui reproduise ton problème ?
    Avec un joli copier/copier de ce que te raconte ton compilo ?

  8. #8
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 42
    Par défaut
    si je vais coller le minimum . l'erreur pourra etre dans ce qui reste
    En plus ce code n'est pas long
    merci

  9. #9
    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
    Citation Envoyé par houcem001 Voir le message
    si je vais coller le minimum . l'erreur pourra etre dans ce qui reste
    Et non car c'est un exemple COMPLET MINIMAL qui reproduit ton problème.
    C'est-à-dire que tu vas toi même réduire la taille de ton code pour ne garder quasiment plus que ce qui poses problème.

    Non seulement c'est une démarche que tu auras à reproduire plus tard, mais aussi ce ne serait pas te rendre service que de te donner la réponse directement...
    On est là pour t'aider, pas pour te donner la solution toute crue.

  10. #10
    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
    En plus, je ne vois qu'un exe dans ton archive.... Essaye d'identifier le code minimal qui produit ton erreur, et si cela ne te suffit pas à comprendre ton problème alors poste ce code.
    Merci.

  11. #11
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    En plus, je ne vois qu'un exe dans ton archive...
    non non, il y a bien des sources
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

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

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