Précédent   Forum du club des développeurs et IT Pro > C et C++ > C++ > Débuter
Débuter Forum d'entraide pour débuter en langage de programmation C++. Avant de poster : cours d'initiation au C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/01/2013, 19h17   #1
Archimyste
Invité de passage
 
Homme
Étudiant
Inscription : 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 !
Archimyste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 21h05   #2
Neckara
Rédacteur/Modérateur

 
Avatar de Neckara
 
Homme Denis
Étudiant
Inscription : décembre 2011
Messages : 2 838
Détails du profil
Informations personnelles :
Nom : Homme Denis
Localisation : France, Loire (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2011
Messages : 2 838
Points : 8 628
Points : 8 628
Envoyer un message via MSN à Neckara Envoyer un message via Skype™ à Neckara
Bonjour,

Dans ton .h essaye de mettre :
Je pense que cela résolvera ton premier problème de link.
__________________
Recherche devs C++ motivés et sérieux pour Last Dungeon.

Chaîne Youtube : Vidéos

Ma page DVP : http://neckara.developpez.com/
Neckara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 21h08   #3
cob59
Membre chevronné
 
Inscription : décembre 2008
Messages : 496
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 496
Points : 761
Points : 761
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).
cob59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 21h43   #4
Lintel-oo
Membre habitué
 
Homme
Étudiant
Inscription : avril 2011
Messages : 239
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 239
Points : 128
Points : 128
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
Lintel-oo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 23h36   #5
Archimyste
Invité de passage
 
Homme
Étudiant
Inscription : 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
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.
Archimyste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 09h20   #6
Bousk
Modérateur
 
Homme Cyrille
Network programmer
Inscription : juin 2010
Messages : 1 570
Détails du profil
Informations personnelles :
Nom : Homme Cyrille
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Network programmer

Informations forums :
Inscription : juin 2010
Messages : 1 570
Points : 4 156
Points : 4 156
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.
Bousk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 14h58   #7
Archimyste
Invité de passage
 
Homme
Étudiant
Inscription : 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
Dans cette partie du cour, il est expliqué comment créer une nouvelle classe, sur code::blocks, via new >> file ...

Citation:
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.
Archimyste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 15h20   #8
Bousk
Modérateur
 
Homme Cyrille
Network programmer
Inscription : juin 2010
Messages : 1 570
Détails du profil
Informations personnelles :
Nom : Homme Cyrille
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Network programmer

Informations forums :
Inscription : juin 2010
Messages : 1 570
Points : 4 156
Points : 4 156
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 ...

Citation:
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.
Bousk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 15h34   #9
Archimyste
Invité de passage
 
Homme
Étudiant
Inscription : 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
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 :
Citation:
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
Archimyste est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 16h02   #10
Bousk
Modérateur
 
Homme Cyrille
Network programmer
Inscription : juin 2010
Messages : 1 570
Détails du profil
Informations personnelles :
Nom : Homme Cyrille
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Network programmer

Informations forums :
Inscription : juin 2010
Messages : 1 570
Points : 4 156
Points : 4 156
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 ...
Citation:
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.
Bousk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h53.


 
 
 
 
Partenaires

Hébergement Web