Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 10 sur 10
  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 :
    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 :
    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 :
    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


    Homme Profil pro Denis
    Étudiant
    Inscrit en
    décembre 2011
    Messages
    5 007
    Détails du profil
    Informations personnelles :
    Nom : Homme Denis
    Âge : 21
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2011
    Messages : 5 007
    Points : 14 908
    Points
    14 908

    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 émérite
    Inscrit en
    décembre 2008
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 533
    Points : 866
    Points
    866

    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
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2011
    Messages : 252
    Points : 126
    Points
    126

    Par défaut

    Code :
    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 Cyrille
    Network programmer
    Inscrit en
    juin 2010
    Messages
    2 200
    Détails du profil
    Informations personnelles :
    Nom : Homme Cyrille
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Network programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 2 200
    Points : 5 721
    Points
    5 721

    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 Cyrille
    Network programmer
    Inscrit en
    juin 2010
    Messages
    2 200
    Détails du profil
    Informations personnelles :
    Nom : Homme Cyrille
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Network programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 2 200
    Points : 5 721
    Points
    5 721

    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 Cyrille
    Network programmer
    Inscrit en
    juin 2010
    Messages
    2 200
    Détails du profil
    Informations personnelles :
    Nom : Homme Cyrille
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Network programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 2 200
    Points : 5 721
    Points
    5 721

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •