Pages : 1
#1 Le 01/04/2020, à 20:07
- chris7522
Erreur de compilation ( C++)
Bonjour,
J'ai ce message d'erreur que je n'arrive pas a comprendre . Ca doit pas etre grand chose comme d'habitude , mais je vois pas .
Merci de votre aide .
#ifndef FONCTAB_HPP_
#define FONCTAB_HPP_
#include <iostream>
#include <vector>
class Joueur
{
public:
Joueur();
~Joueur();
void saisie(std::vector<std::string>&tab,size_t taille);
void affiche(std::vector<std::string>&tab,size_t taille);
};
#endif /* FONCTAB_HPP_ */
#include "foncTab.hpp"
using namespace std;
void Joueur::saisie(vector<string> &tab,size_t taille)
{
while(tab.size() < taille)
tab.clear();
for(size_t i(0);i<tab.size();++i){
cout << "Entrez nom du joueur" << i <<":" << endl;
cin >> tab[i];
}
}
void Joueur::affiche(vector<string> &tab,size_t taille)
{
for(size_t i(0);i< tab.size();++i){
cout << "Le joueur" << i << "est" << tab[i]<< endl;
}
}
#include "foncTab.hpp"
#include <iostream>
#include <vector>
using namespace std;
int main()
{
Joueur equipe1,equipe2;
char a;
cout << "Voulez vous faire une partie ?" << endl;
cout << "Tapez o (oui) ou n (non)"<< endl;
cin >> a;
if(a == 'o')
{
size_t nb(0);
cout << "Quel est le nombre de personne dans votre equipe ?" << endl;
cin >> nb;
vector<string>tab;
equipe1.saisie(tab,nb);
cout << "Votre equipe est constitué de :" << nb << "personnes" << endl;
cout << "Voici le nom des joueurs :" << endl;
equipe1.affiche(tab,nb);
}
else
cout << "Aurevoir,a bientot" << endl;
return 0;
}
20:48:48 **** Incremental Build of configuration Debug for project foncTab ****
make all
Building file: ../foncTab.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"foncTab.d" -MT"foncTab.o" -o "foncTab.o" "../foncTab.cpp"
Finished building: ../foncTab.cpp
Building target: foncTab
Invoking: GCC C++ Linker
g++ -o "foncTab" ./foncTab.o ./main.o
./main.o : Dans la fonction « main » :
/home/chris/eclipse-workspace/foncTab/Debug/../main.cpp:8 : référence indéfinie vers « Joueur::Joueur() »
/home/chris/eclipse-workspace/foncTab/Debug/../main.cpp:8 : référence indéfinie vers « Joueur::Joueur() »
/home/chris/eclipse-workspace/foncTab/Debug/../main.cpp:8 : référence indéfinie vers « Joueur::~Joueur() »
/home/chris/eclipse-workspace/foncTab/Debug/../main.cpp:8 : référence indéfinie vers « Joueur::~Joueur() »
/home/chris/eclipse-workspace/foncTab/Debug/../main.cpp:8 : référence indéfinie vers « Joueur::~Joueur() »
/home/chris/eclipse-workspace/foncTab/Debug/../main.cpp:8 : référence indéfinie vers « Joueur::~Joueur() »
collect2: error: ld returned 1 exit status
makefile:44: recipe for target 'foncTab' failed
make: *** [foncTab] Error 1
"make all" terminated with exit code 2. Build might be incomplete.
20:48:50 Build Failed. 2 errors, 0 warnings. (took 1s.289ms)
Hors ligne
#2 Le 01/04/2020, à 20:30
- grigouille
Re : Erreur de compilation ( C++)
C'est clair pourtant (et en français svp) : il est où le code du constructeur et du destructeur ?
Debian (xfce) 12
HP LaserJet M1132 MFP
Hors ligne
#3 Le 01/04/2020, à 20:32
- chris7522
Re : Erreur de compilation ( C++)
aie aie aie
Merci de ton aide
#include "foncTab.hpp"
using namespace std;
Joueur::Joueur(){}
Joueur::~Joueur(){}
void Joueur::saisie(vector<string> &tab,size_t taille)
{
tab.clear();
while(tab.size() < taille){
cout << "Entrez le nom du joueur" << endl;
string name;
cin >> name;
tab.push_back(name);
}
}
void Joueur::affiche(vector<string> &tab,size_t taille)
{
for(size_t i(0);i< taille;++i){
cout << "Le joueur " << i+1 << " est " << tab[i]<< endl;
}
}
Dernière modification par chris7522 (Le 01/04/2020, à 21:20)
Hors ligne
#4 Le 03/04/2020, à 15:57
- chris7522
Re : Erreur de compilation ( C++)
Une derniere question si je peux me permettre .
Admettons que pour chaque instance " equipe1" et "equipe2 " , j'ai 3 personnes dans chacune d'entre elle .
equipe1 :
-toto
-tata
-titi
equipe2:
-riri
-fifi
-loulou
Comment puis-je afficher " fifi" par exemple ?
J'avais pensé a :
equipe2.tab[1]
Hors ligne
#5 Le 03/04/2020, à 17:15
- grigouille
Re : Erreur de compilation ( C++)
Ta class Joueur est sans état. : elle ne contient rien. Tu pourrais d'ailleur déclarer tes fonctions "saisie" et "affiche" static.
Debian (xfce) 12
HP LaserJet M1132 MFP
Hors ligne
#6 Le 03/04/2020, à 17:22
- chris7522
Re : Erreur de compilation ( C++)
Elle contient 2 déclarations de méthode non ?
Hors ligne
#7 Le 03/04/2020, à 17:34
- grigouille
Re : Erreur de compilation ( C++)
Tu pourrais ajouter static à tes deux méthodes et appeler la méthode ainsi
#include <iostream>
#include <vector>
#include <string>
class Joueur
{
public:
static void saisie(std::vector<std::string>&tab,size_t taille);
static void affiche(std::vector<std::string>&tab,size_t taille);
};
using namespace std;
void Joueur::saisie(vector<string> &tab,size_t taille)
{
tab.clear();
while(tab.size() < taille){
cout << "Entrez le nom du joueur" << endl;
string name;
cin >> name;
tab.push_back(name);
}
}
void Joueur::affiche(vector<string> &tab,size_t taille)
{
for(size_t i(0);i< taille;++i){
cout << "Le joueur " << i+1 << " est " << tab[i]<< endl;
}
}
int main()
{
char a;
cout << "Voulez vous faire une partie ?" << endl;
cout << "Tapez o (oui) ou n (non)"<< endl;
cin >> a;
if(a == 'o')
{
size_t nb(0);
cout << "Quel est le nombre de personne dans votre equipe ?" << endl;
cin >> nb;
vector<string>tab;
Joueur::saisie(tab,nb);
cout << "Votre equipe est constitué de :" << nb << "personnes" << endl;
cout << "Voici le nom des joueurs :" << endl;
Joueur::affiche(tab,nb);
}
else
cout << "Aurevoir,a bientot" << endl;
return 0;
}
Debian (xfce) 12
HP LaserJet M1132 MFP
Hors ligne
#8 Le 03/04/2020, à 18:00
- chris7522
Re : Erreur de compilation ( C++)
Merci de ton aide .
Mais du coup , je ne peux plus travailler sur mes 2 instances .
Dernière modification par chris7522 (Le 03/04/2020, à 18:01)
Hors ligne
#9 Le 03/04/2020, à 19:51
- grigouille
Re : Erreur de compilation ( C++)
Ta class Joueur n'est qu'un espace de nom. Ton code se résume à ceci :
#include <iostream>
#include <vector>
#include <string>
namespace Joueur {
void saisie(std::vector<std::string>&tab,size_t taille);
void affiche(std::vector<std::string>&tab,size_t taille);
}//Joueur
using namespace std;
namespace Joueur {
void saisie(vector<string> &tab,size_t taille)
{
tab.clear();
while(tab.size() < taille){
cout << "Entrez le nom du joueur" << endl;
string name;
cin >> name;
tab.push_back(name);
}
}
void affiche(vector<string> &tab,size_t taille)
{
for(size_t i(0);i< taille;++i){
cout << "Le joueur " << i+1 << " est " << tab[i]<< endl;
}
}
}//Joueur
int main()
{
char a;
cout << "Voulez vous faire une partie ?" << endl;
cout << "Tapez o (oui) ou n (non)"<< endl;
cin >> a;
if(a == 'o')
{
size_t nb(0);
cout << "Quel est le nombre de personne dans votre equipe ?" << endl;
cin >> nb;
vector<string>tab;
Joueur::saisie(tab,nb);
cout << "Votre equipe est constitué de :" << nb << "personnes" << endl;
cout << "Voici le nom des joueurs :" << endl;
Joueur::affiche(tab,nb);
}
else
cout << "Aurevoir,a bientot" << endl;
return 0;
}
Dernière modification par grigouille (Le 04/04/2020, à 07:51)
Debian (xfce) 12
HP LaserJet M1132 MFP
Hors ligne
#10 Le 05/04/2020, à 14:52
- chris7522
Re : Erreur de compilation ( C++)
Daccord , je comprends .
Merci de ton aide
Hors ligne
Pages : 1