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 :

Poblème détection de Classe


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut Poblème détection de Classe
    Bonjour!

    Pour résumer, je me suis construit une classe avec un .H un .CPP et un MAIN.

    Parcontre, lorsque j'essaie de créer un objet à partir du Main et d'appeler la fonction lecture ( histoire de voir si ce que je fais fonctionne tout en codant), j'ai l'erreur suivante:

    "'postfix' : l'utilisation d'une classe modèle requiert une liste d'arguments modèle"

    De plus, je me suis amusé à modifier mon constructeur avec du n'importe quoi afin de vérifier si j'allais avoir droit à une erreur. Je n'ai pas eu d'erreur, donc j'ai déduit que mon programme n'entre tout simplement pas dans mon constructeur... Je ne comprends pas pourquoi, j'ai pourtant vérifié mon code, et il correspond aux modèles de classes que j'avais. Si vous pouvez m'aider, cela serait grandement apprécié, car je ne sais plus où regarder..

    Voici mon code:
    Merci!

    MAIN:

    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
     
    #include <iostream>
    #include <string>
    #include "Postfix.h"
    using namespace std;
     
     
    void main(void)
     
    {
     
    //Début du processus
    postfix objet;
     
    objet.Lecture();
     
     
    }
    POSTFIX.H :

    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
    27
    28
    29
    30
    31
     
    #ifndef DEF_POSTFIX
    #define DEF_POSTFIX
    #include <stack>
    #include <vector>
    #include <iostream>
    using std::stack;
    using std::vector;
     
     
    template<class element>
    class postfix
    {
     
     public:
     
      postfix();
      ~postfix();
      bool Lecture();
      bool valider_expression();
      void transformerennombres(); 
      void transformerenpostfixe();
      int evaluer_expression();
     
     private:
     
       stack<element> Pile;
       vector<element> Tableau; 
    };
     
    #endif
    POSTFIX.CPP

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    #include <iostream>
    #include <string>
    #include "Postfix.h"
    #include <stack>
    #include <vector>
    using namespace std;
     
     
     
    template<class element>
    postfix<element>::postfix()
     
    {
     
     
    vector<int>*Tableau = new vector<int>();
    stack<int>*Pile = new stack<int>();
     
     
     
    }
     
     
     
    template<class element>
    bool postfix<element>::Lecture()
    { 
     
    char Exp_Infixe;
     
     
    cout << "***********Programme de transformation***********" << endl;
    cout << " Entrez une expression en forme infixe : ";
    cin >> Exp_Infixe;
     
     
     
    }
     
    template<class element>
    bool postfix<element>::valider_expression()
    {
     
     
    }
    template<class element>
    void postfix<element>::transformerennombres()
    {
     
     
    }
     
    template <class element>
    void postfix<element>::transformerenpostfixe()
    {
     
    }
     
    template <class element>
    int postfix<element>::evaluer_expression()
    {
     
     
     
    }
     
    template<class element>
     
    postfix<element>::~postfix()
    {
     
    delete Tableau;
    delete Pile;
     
    }

  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
    Par défaut
    Bonjour,
    1/ void main(void) est une forme non standard de main. Ce devrait être :
    int main()
    ou
    int main(int argc, char* argv[])

    2/ Puisque tu définis une classe template, tu dois l'instancier en précisant le paramètre générique à utiliser. C'est comme un fonction : appellerais-tu une fonction sans lui donner ses paramètres ? Non. Ben pour une classe générique c'est pareil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int main()
    { 
       //Début du processus
       postfix<int> objet; 
       objet.Lecture();
       return 0;
    }
    3/Supprimes ces using namespace std;. Un clavier ne s'use pas si vite que ça. Alors std:: ne devrait pas trop te fatiguer le poignet

    4/ Une fois que tu arriveras à compiler ton programme, ... tu auras une erreur à l'édition de lien. cf F.A.Q. Pourquoi mes templates ne sont-ils pas reconnus à l'édition des liens ?

    P.S. : quel livre utilises-tu pour apprendre ? J'ai l'impression que tu ne commences pas par le plus simple.

  3. #3
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 545
    Par défaut
    Bonjour

    Citation Envoyé par Foktop Voir le message

    POSTFIX.H :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    template<class element>
    class postfix
    {
    ...
       stack<element> Pile;
       vector<element> Tableau; 
    };
    POSTFIX.CPP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    template<class element>
    postfix<element>::postfix()
    {
    vector<int>*Tableau = new vector<int>();
    stack<int>*Pile = new stack<int>();
    }
    ce qui précède n'est pas cohérent, dans la définition du constructeur la pile et le tableau sont perdus, on n'est pas en Java, il est inutile d'allouer explicitement ces deux membres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    template<class element>
     
    postfix<element>::~postfix()
    {
    delete Tableau;
    delete Pile;
    }
    on n'ira pas jusqu'à l'erreur de link car ce qui précède provoquera une erreur de compilation
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  4. #4
    Membre régulier
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut
    Je compile! merci!

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

Discussions similaires

  1. Classe sans détection de type
    Par shaiHulud dans le forum Général Python
    Réponses: 5
    Dernier message: 25/08/2012, 12h49
  2. [PHP 5.3] Détection d'une propriété d'une class
    Par nicko_73 dans le forum Langage
    Réponses: 2
    Dernier message: 18/02/2012, 17h07
  3. Classe pour la création d'un graphe xy
    Par Bob dans le forum MFC
    Réponses: 24
    Dernier message: 03/12/2009, 17h20
  4. détection d'une checkbox - class générique
    Par Mengué georges dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 23/06/2009, 17h32
  5. Réponses: 31
    Dernier message: 30/03/2006, 16h57

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