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 :

Probleme de reference - Methode de classe


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    6
    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 : 6
    Points : 4
    Points
    4
    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
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 209
    Points
    23 209
    Par défaut
    Bonjour,

    Dans ton .h essaye de mettre :
    Je pense que cela résolvera ton premier problème de link.

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086
    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 : 176
    Points
    176
    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
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    6
    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 : 6
    Points : 4
    Points
    4
    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
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 958
    Points
    32 958
    Billets dans le blog
    4
    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.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    6
    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 : 6
    Points : 4
    Points
    4
    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
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 958
    Points
    32 958
    Billets dans le blog
    4
    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.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    6
    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 : 6
    Points : 4
    Points
    4
    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
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 958
    Points
    32 958
    Billets dans le blog
    4
    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.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

+ 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, 06h15
  2. probleme avec les methodes dans une class
    Par artemis93 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 02/05/2011, 13h33
  3. java probleme sur la methode replaceAll() de la classe String
    Par sorilazer dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 02/10/2008, 12h09
  4. Réponses: 9
    Dernier message: 23/09/2008, 19h00
  5. Visibilité de methodes dans Classe de Class
    Par Math75 dans le forum C++
    Réponses: 9
    Dernier message: 28/09/2004, 13h48

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