Problème de référence indéfinie
Bonjour,
J'ai codé deux fichiers salarie.cpp et salarie.h.
Lorsque je compile avec g++ , il me met comme message d'erreur référence indéfinie.
J'ai beau cherché sur le forum et je ne trouves pas. Pourriez vous m'expliquer pourquoi il fait des références indéfinies??
Voici ma classe qui pose problème
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 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| #ifndef _salarie_H
#define _salarie_H
#include <iostream>
#include "personnel.h"
#include "date.h"
using namespace std;
class salarie: public personnel
{
protected:
//la date d'embauche
date e;
// le salaire
int salaire;
//le nb de jours travaillées
int nbtravail;
//en congé ou non
bool enconge;
salarie *prec;
salarie *suivant;
public:
//constructeur par défaut
salarie();
// constructeur spécialisé
salarie(char* ,char* ,int, int, date, int, bool);
//fonction augmente le salaire
int augmentesalaire(int );
// calcule le nb de rtt ayant droits
double rtt();
//ajoute un nombre de jours travaillés
int ajoutenbtravail(int );
//vérifie qu on peut prendre congé
bool prendreconge(int);
//remet a jour l attr encongé
bool finconge();
// compare deux salaires
bool operator <(const salarie &);
//affiche
friend ostream & operator << (ostream &, const salarie &);
//saisie
friend istream & operator >> (istream &, salarie &);
};
#endif |
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 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| #include "salarie.h"
#include "date.h"
#include "personnel.h"
#include <iostream>
#include <math.h>
using namespace std;
//constructeur salarie
salarie::salarie(char* x, char* y, int z, int s, date d, int nbt, bool c):personnel(x,y,z)
{
e= d;
salaire=s;
nbtravail=nbt;
enconge=c;
prec=NULL;
suivant=NULL;
}
//constructeur par défaut
salarie::salarie():personnel()
{
}
// on augmente le salaire de la valeur passé en paramètre
int salarie::augmentesalaire(int aug)
{
salaire=salaire+aug;
}
//calcule le nb de RTT ou x est le nombre de jours travaillés
double salarie::rtt()
{
return ceil(nbtravail/15);//arrondi a l entier le plus proche au dessu
}
//ajoute un nombre de jour travaillés
int salarie::ajoutenbtravail(int x)
{
nbtravail=nbtravail+x;
}
//on verifie qu'il peut prendre conge. Si c'est le cas , on les déduit de son quota.
bool salarie::prendreconge(int jdem) //prend en paramètre un certains nombre de jours demandés
{
//on test si les jours demandés sont inférieurs aux jours acquis
if (rtt()<jdem)
{
return 0;
}
else
{
int res;
res= -(jdem*15);
ajoutenbtravail(res);
enconge = true;
return 1;
}
}
// on remet l'employe en travail et no,n plus en congé
bool salarie::finconge()
{
enconge=false;
}
// on compare la date des employés
bool salarie::operator <(const salarie & s)
{
if (e<s.e)
{
return true;
}
else
{
return false;
}
}
//fonction d'affichage par surcharge
ostream & operator <<(ostream & f, const salarie & s)
{
return f<< "Date d embauche: " << s.e << '\n' << "Nom: " << s.nom << '\n' << "Prenom: " << s.prenom << '\n' << "Tel: " <<s.tel << '\n' << "Salaire: " << s.salaire << '\n' << "Nb de jours travailles: " << s.nbtravail << '\n' << "En conge? " << s.enconge << endl;
}
// fonction de saisie par surcharge
istream & operator >>(istream & f, salarie & s)
{
/*char w[50];
cout << "Entrez le nom: " ;
f >> w;
s.nom=new char[strlen(w)+1];
strcpy(s.nom,w);
cout << "Entrez le prenom: " ;
f >> w;
s.prenom=new char[strlen(w)+1];
strcpy(s.prenom,w);
cout << "Entrez le numero de telephone: ";
f >> s.tel;*/
cout << "Entrez la date d embauche: ";
f >> s.e;
cout << "Entrez le nombres de jours travaillés: ";
f >> s.nbtravail;
cout << "Entrez le salaire: ";
f >> s.salaire;
return f;
} |
D'avance je vous remercie.