problème à la compilation
Salut
J'ai fait ce petit programme pour le plaisir mais je suis incapable de trouver d'où vient mon erreur
J'ai découper mon programme en 3 morceaux que voici :
epargne.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #ifndef EPARGNE_H
#define EPARGNE_H
class Compte_epargne {
public:
Compte_epargne(const char *, const char *, double = 0.0);
~Compte_epargne();
const char *lecture_prenom() const;
const char *lecture_nom() const;
void calcul_interet_mensuel();
static void modifier_interet(double);
void afficher_solde() const;
private:
double solde_epargne;
static double taux_interet_annuel;
char *prenom;
char *nom;
};
#endif |
epargne.cpp
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
| #include <iostream>
#include <cstring>
#include <cassert>
#include "epargne.h"
using namespace std;
Compte_epargne::Compte_epargne(const char *premier, const char *dernier, double solde) {
prenom = new char[ strlen( premier ) +1 ];
assert( prenom != 0 );
strcpy( prenom, premier );
nom = new char[ strlen( dernier ) +1 ];
assert( nom != 0 );
strcpy( nom, dernier );
solde_epargne = solde;
}
Compte_epargne::~Compte_epargne() {
delete prenom;
prenom = 0;
delete nom;
nom = 0;
}
const char *Compte_epargne::lecture_prenom() const {
return prenom;
}
const char *Compte_epargne::lecture_nom() const {
return nom;
}
void Compte_epargne::calcul_interet_mensuel() {
solde_epargne *= (taux_interet_annuel / 12.0);
}
void Compte_epargne::modifier_interet(double nouvel_interet) {
taux_interet_annuel = nouvel_interet;
}
void Compte_epargne::afficher_solde() const {
cout << solde_epargne;
} |
main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <iostream>
#include "epargne.h"
using namespace std;
int main() {
Compte_epargne *epargnant1 = new Compte_epargne("Suzanne", "Bedard", 2000.00);
// Compte_epargne *epargnant2 = new Compte_epargne("Robert", "Minet", 3000.00);
// cout << "L'employé " << epargnant1->lecture_nom() << " " << epargnant1->lecture_prenom() << " dispose d'un solde de ";
// epargnant1->afficher_solde();
delete epargnant1;
// epargnant1 = 0;
return 0;
} |
Je n'ai pas eu le temps de faire une mise en forme 100% C++ :P
Pour ce qui est des erreurs, voici ce que j'ai à la compilation :
Code:
1 2 3 4 5 6 7 8
| CMakeFiles/epargne.dir/epargne.o: In function `Compte_epargne::calcul_interet_mensuel()':
epargne.cpp:(.text+0x38): undefined reference to `Compte_epargne::taux_interet_annuel'
CMakeFiles/epargne.dir/epargne.o: In function `Compte_epargne::modifier_interet(double)':
epargne.cpp:(.text+0x6e): undefined reference to `Compte_epargne::taux_interet_annuel'
collect2: ld a retourné 1 code d'état d'exécution
make[2]: *** [epargne] Erreur 1
make[1]: *** [CMakeFiles/epargne.dir/all] Erreur 2
make: *** [all] Erreur 2 |
Si quelqu'un sait ce qui ne va pas, je suis preneur sachant que je voulais tester la partie static double afin d'éviter d'avoir des champs identique dans tous les sens