IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

problème à la compilation


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 126
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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++

    Pour ce qui est des erreurs, voici ce que j'ai à la compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Tu dois initialiser ta variable statique dans le .cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double Compte_epargne::taux_interet_annuel = 102.5;
    http://cpp.developpez.com/faq/cpp/?p...SS_init_static

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 126
    Par défaut
    Citation Envoyé par aoyou Voir le message
    Tu dois initialiser ta variable statique dans le .cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double Compte_epargne::taux_interet_annuel = 102.5;
    http://cpp.developpez.com/faq/cpp/?p...SS_init_static

    Merci, c'était bien ça. Dans la documentation que j'ai, ils ont oublié de l'indiquer mais bon maintenant que c'est ok,
    Encore merci

  4. #4
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Au passage, les const char * peuvent avantageusement être rempacés par des std::string !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 126
    Par défaut
    Citation Envoyé par poukill Voir le message
    Au passage, les const char * peuvent avantageusement être rempacés par des std::string !
    Ok, merci pour le renseignement mais je n'ai pas encore vu les objet string mais ça va venir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de compilation sous visual C++
    Par fabmili dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2004, 19h52
  2. problème de compil devc++ socket
    Par stefdem dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 11/12/2003, 11h33
  3. Réponses: 1
    Dernier message: 29/10/2003, 12h16
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo