p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : janvier 2013
    Messages : 5
    Points : 1
    Points
    1

    Par défaut Probleme de reference - Methode de classe

    Bonsoir a tous, j'ai un problème avec mon mini-programme que je n'arrive pas a résoudre. Le code est tout simple, mais je n'arrive pas a utiliser les méthodes d'une classe dans mon main. Voici le code allégé :

    Le main.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
     
    #include <iostream>
    #include "etatcase.h"
     
     
    using std::endl;
    using std::cout;
    using std::cin;
     
    int main()
    {
    int dcaseune;
     
    Etatcase Caseune(false,2);
    cout << "Caseune a comme direction :" ;
    dcaseune=Caseune.get_d(); 
    cout << Caseune.get_d();
     
      return 0;
    }
    etatcase.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
     
    #ifndef ETATCASE_H_INCLUDED
    #define ETATCASE_H_INCLUDED
     
    class Etatcase
    {
     
    public :
     
    Etatcase();
    Etatcase(bool o, int d);
    bool get_o();
    int get_d();
    void set_o(bool o);
    void set_d(int d);
    void modif_d();
     
    private :
        bool occupe;
        int direction; // 1 ouest 2 nord 3 est 4 sud
     
    };
     
    #endif // ETATCASE_H_INCLUDED
    et enfin etatcase.cpp (avec uniquement les fonctions concernés) :
    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
     
    #include "etatcase.h"
    using namespace std;
     
    Etatcase::Etatcase()
    {
        occupe = false;
        direction = 1;
    }
     
    Etatcase::Etatcase(bool o, int d)
    {
      //  if (d<1 or d>4) d=1;
        direction = d;
        occupe = o;
    }
     
     
    int Etatcase::get_d() const
    {
        return d;
     
    }

    Quand j'essaye de construire mon projet, code blocks me donne deux erreurs dans le main :
    -Undefined reference to 'Etatcase::Etatcase(bool, int)'
    -Undefined reference to 'Etatcase::get_d()'

    pourtant, les include me semblent bon.


    J'attends vos réponses, merci d'avance et bonne année !

  2. #2
    Expert Confirmé Sénior

    Avatar de Neckara
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    5 554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2011
    Messages : 5 554
    Points : 16 422
    Points
    16 422

    Par défaut

    Bonjour,

    Dans ton .h essaye de mettre :
    Je pense que cela résolvera ton premier problème de link.
    On dit "chiffrer" pas "crypter" !

    On dit "bibliothèque" pas "librairie" !

    Ma page DVP : http://neckara.developpez.com/

  3. #3
    Membre émérite
    Inscrit en
    décembre 2008
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 533
    Points : 868
    Points
    868

    Par défaut

    Tu n'as probablement pas ajouté etatcase.cpp à ton projet CodeBlocks (qu'il soit présent dans ton répertoire de sources n'est pas suffisant).

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    avril 2011
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2011
    Messages : 274
    Points : 143
    Points
    143

    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int Etatcase::get_d() const // erreur ici
    {
        return d; //erreur ici !
     
    }
    Fais comme le dit neckara et à la place de d mets direction sinon d n'est déclaré nulle part. Sinon il est aussi probable que le .cpp ne soit pas compilé auquel cas fais comme cob59

  5. #5
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : janvier 2013
    Messages : 5
    Points : 1
    Points
    1

    Par défaut

    Vous aviez tous raison ^^

    Les cours que j'utilise pour apprendre le C++ ne disent pas d'include le .cpp aux projet, ils parlent uniquement des .h

    Et apres l'avoir fait en effet j'avais un problème de constante ainsi que de "d' qui devait etre "direction" ^^

    Merci a tous.

  6. #6
    Modérateur

    Homme Profil pro
    Network programmer
    Inscrit en
    juin 2010
    Messages
    2 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Network programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 2 699
    Points : 7 734
    Points
    7 734

    Par défaut

    Bonjour,

    en es-tu sûr ?
    Les cours que j'ai vu jusque là ne parlent pas du tout d'IDE, ou alors s'appuyent dessus. Selon le cas, soit tu ne verras jamais qu'il faut ajouter un fichier dans ton environnement de travail, mais tout au plus une ligne de commande pour compiler, soit ils te disent comment créer un fichier, et il s'ajoute tout seul à l'environnement.
    Là où j'ai un doute, c'est sur ce que tu as lu... ajouter les .h dans ton IDE n'a strictement aucun intérêt et aucune incidence. Ces fichiers sont uniquement utilisés comme include et l'environnement n'a pas besoin de les avoir.
    Seuls les .c et .cpp doivent obligatoirement être ajoutés, pour être compilés.

  7. #7
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : janvier 2013
    Messages : 5
    Points : 1
    Points
    1

    Par défaut

    Dans cette partie du cour, il est expliqué comment créer une nouvelle classe, sur code::blocks, via new >> file ...

    C’est terminé, nous avons maintenant deux fichiers en plus dans notre projet : un «*.h*» et un «*.cpp*».

    Notre «*main*» devra nécessairement inclure notre nouveau fichier «*.h*» :
    il est aussi dit d'include le .h dans le .cpp nouvellement crée.



    Si tout ce que j'ai vu est faux, est-il possible d'avoir un bon résumé de quels include et ou je dois les faire svp.

  8. #8
    Modérateur

    Homme Profil pro
    Network programmer
    Inscrit en
    juin 2010
    Messages
    2 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Network programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 2 699
    Points : 7 734
    Points
    7 734

    Par défaut

    Citation Envoyé par Archimyste Voir le message
    Dans cette partie du cour, il est expliqué comment créer une nouvelle classe, sur code::blocks, via new >> file ...

    C’est terminé, nous avons maintenant deux fichiers en plus dans notre projet : un «*.h*» et un «*.cpp*».

    Notre «*main*» devra nécessairement inclure notre nouveau fichier «*.h*» :
    Et bien tu te trouves dans le cas 2, et il n'est clairement pas écrit qu'il ne faut ajouter que le .h dans ton projet..
    Tes 2 fichiers sont déjà ajoutés dans ton projet..!

    Ceci est vrai, ce que tu en extrapoles on ne le contrôle pas... si en lisant ça tu lis "ajouter le .h uniquement au projet", et bien lis plus attentivement. Ce n'est vraiment pas du tout ce qui est écrit.

  9. #9
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : janvier 2013
    Messages : 5
    Points : 1
    Points
    1

    Par défaut

    Citation Envoyé par Bousk Voir le message
    si en lisant ça tu lis "ajouter le .h uniquement au projet", et bien lis plus attentivement.
    tout ce que j'ai dit c'est :
    Les cours que j'utilise pour apprendre le C++ ne disent pas d'include le .cpp aux projet, ils parlent uniquement des .h
    Alors qui extrapole et devrait lire plus attentivement :o

  10. #10
    Modérateur

    Homme Profil pro
    Network programmer
    Inscrit en
    juin 2010
    Messages
    2 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Network programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 2 699
    Points : 7 734
    Points
    7 734

    Par défaut

    Citation Envoyé par Archimyste Voir le message
    Vous aviez tous raison ^^

    Les cours que j'utilise pour apprendre le C++ ne disent pas d'include le .cpp aux projet, ils parlent uniquement des .h

    Et apres l'avoir fait en effet j'avais un problème de constante ainsi que de "d' qui devait etre "direction" ^^

    Merci a tous.
    Citation Envoyé par Archimyste Voir le message
    Dans cette partie du cour, il est expliqué comment créer une nouvelle classe, sur code::blocks, via new >> file ...
    C’est terminé, nous avons maintenant deux fichiers en plus dans notre projet : un «*.h*» et un «*.cpp*».

    Notre «*main*» devra nécessairement inclure notre nouveau fichier «*.h*» :
    il est aussi dit d'include le .h dans le .cpp nouvellement crée.

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

Discussions similaires

  1. probleme d ajout methode , diagramme de classe
    Par oussama skilatchi dans le forum UML
    Réponses: 3
    Dernier message: 28/05/2012, 05h15
  2. probleme avec les methodes dans une class
    Par artemis93 dans le forum Débuter
    Réponses: 4
    Dernier message: 02/05/2011, 12h33
  3. Réponses: 3
    Dernier message: 02/10/2008, 11h09
  4. Réponses: 9
    Dernier message: 23/09/2008, 18h00
  5. Visibilité de methodes dans Classe de Class
    Par Math75 dans le forum C++
    Réponses: 9
    Dernier message: 28/09/2004, 12h48

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