Partage
  • Partager sur Facebook
  • Partager sur Twitter

problèmes de compilation

Sujet résolu
    19 juin 2007 à 13:49:46

    Bonjour tout le monde,

    Pour m'exercer j'ai codé un convertisseur de devises (inspiré du tp sur ruby):

    main:
    #include <iostream>
    #include <string>
    #include "Euro.h"
    #include "Dollar.h"
    #include "Franc.h"

    using namespace std;

    void afficherMontantConverti(double montantConverti);

    int main()
    {
            double montantConverti=0;

            Euro objetEuro(359);
            Dollar objetDollar(458);
            Franc objetFranc(397);

        montantConverti=objetEuro.convertirEnDollars(objetEuro.getMontant());
            afficherMontantConverti(montantConverti);
            montantConverti=objetEuro.convertirEnFrancs(objetEuro.getMontant());
            afficherMontantConverti(montantConverti);
            montantConverti=objetDollar.convertirEnEuros(objetDollar.getMontant());
            afficherMontantConverti(montantConverti);
            montantConverti=objetDollar.convertirEnFrancs(objetDollar.getMontant());
            afficherMontantConverti(montantConverti);
            montantConverti=objetFranc.convertirEnDollars(objetFranc.getMontant());
            afficherMontantConverti(montantConverti);
            montantConverti=objetFranc.convertirEnEuros(objetFranc.getMontant());
            afficherMontantConverti(montantConverti);

            return 0;
    }

    void afficherMontantConverti(double montantConverti)
    {
            cout << "Le montant converti vaut: " << montantConverti << endl;
    }


    (il faudra que je commente mon programme...)

    J'ai réussi à corriger la plupart de mes erreurs (mon découpage en classes est peut-être une autre erreur), sauf trois que je n'arrive pas à résoudre:

    :: === convertisseur, Debug ===
    /home/kboite/projets/convertisseur/main.cpp:7: erreur: expected unqualified-id before «using"
    /home/kboite/projets/convertisseur/main.cpp:37: erreur: «cout" was not declared in this scope
    /home/kboite/projets/convertisseur/main.cpp:37: erreur: «endl" was not declared in this scope
    :: === Build finished: 3 errors, 0 warnings ===

    se serait sympa de m'éclairer,

    merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      19 juin 2007 à 13:55:07

      Je dirais que c'est un ; qui manque à la fin d'une de tes déclarations de classe.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        19 juin 2007 à 13:55:28

        Bonjour.

        Les erreur n°2 et 3 sont dues à la première. Je pense que celle-ci vient d'un problème dans les includes juste en dessus.

        Si tu ne trouve pas d'erreur dans Franc.h, regarde dans celui d'en dessus, jusqu'à Euro.h
        • Partager sur Facebook
        • Partager sur Twitter
          19 juin 2007 à 14:30:04

          @ Cyprien_ & hiura

          Bien vu, j'avais oublié les ; de déclaration de classes

          mais maintenant j'ai ça:

          /home/kboite/projets/convertisseur/main.cpp:15: undefined reference to `Euro::Euro(double)'
          /home/kboite/projets/convertisseur/main.cpp:16: undefined reference to `Dollar::Dollar(double)'
          /home/kboite/projets/convertisseur/main.cpp:17: undefined reference to `Franc::Franc(double)'
          /home/kboite/projets/convertisseur/main.cpp:19: undefined reference to `Euro::getMontant()'
          /home/kboite/projets/convertisseur/main.cpp:19: undefined reference to `Euro::convertirEnDollars(double)'
          /home/kboite/projets/convertisseur/main.cpp:21: undefined reference to `Euro::getMontant()'
          /home/kboite/projets/convertisseur/main.cpp:21: undefined reference to `Euro::convertirEnFrancs(double)'
          /home/kboite/projets/convertisseur/main.cpp:23: undefined reference to `Dollar::getMontant()'
          /home/kboite/projets/convertisseur/main.cpp:23: undefined reference to `Dollar::convertirEnEuros(double)'
          /home/kboite/projets/convertisseur/main.cpp:25: undefined reference to `Dollar::getMontant()'
          /home/kboite/projets/convertisseur/main.cpp:25: undefined reference to `Dollar::convertirEnFrancs(double)'
          /home/kboite/projets/convertisseur/main.cpp:27: undefined reference to `Franc::getMontant()'
          /home/kboite/projets/convertisseur/main.cpp:27: undefined reference to `Franc::convertirEnDollars(double)'
          /home/kboite/projets/convertisseur/main.cpp:29: undefined reference to `Franc::getMontant()'
          /home/kboite/projets/convertisseur/main.cpp:29: undefined reference to `Franc::convertirEnEuros(double)'
          :: === Build finished: 15 errors, 0 warnings ===
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            19 juin 2007 à 14:34:16

            Ca ça veut dire, soit que tu n'as pas encore implémenté les fonctions, soit qu'il y a une erreur de linkage (par exemple, les fichiers contenant l'implémentation de tes classes ne sont pas dans le même projet).
            • Partager sur Facebook
            • Partager sur Twitter
              19 juin 2007 à 14:40:18

              Pas implémenté? si,si
              Mal implémenté? sans doute

              Mon fichier Euro.h
              #ifndef DEF_Euro
              #define DEF_Euro

              class Euro
              {
                      public:
                      Euro();
                      Euro(double montantEnEuros);
                      double convertirEnFrancs(double m_montant);
                      double convertirEnDollars(double m_montant);
                      double getMontant();

                      private:
                      double m_montant;
                      double m_montantEnFrancs;
                      double m_montantEnDollars;

              };

              #endif


              Mon fichier Euro.cpp:
              #include <iostream>
              #include <string>
              #include "Euro.h"

              Euro::Euro() : m_montant(0), m_montantEnFrancs(0), m_montantEnDollars(0)
              {

              }

              Euro::Euro(double montantEnEuros) : m_montant(montantEnEuros),  m_montantEnFrancs(0), m_montantEnDollars(0)
              {

              }

              Euro::double convertirEnFrancs(double m_montant)
              {
                      double montantconverti=m_montant*6.55957;
                      return montantconverti;
              }

              Euro::double convertirEnDollars(double m_montant)
              {
                      double montantconverti=m_montant*1.27175;
                      return montantconverti;
              }

              Euro::double getMontant() const
              {
                  return m_montant;
              }
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                19 juin 2007 à 14:44:23

                o_O
                Le type de retour doit être placé avant Euro::nomDeLaFonction.
                • Partager sur Facebook
                • Partager sur Twitter
                  19 juin 2007 à 14:57:47

                  gloups, merci beaucoup

                  désolé, je suis allé un petit peu vite dans la lecture du cours

                  je dois passer pour un vrai noob
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    19 juin 2007 à 15:03:58

                    Non non, t'inquiète pas ;).
                    Par contre, si tu n'as plus de problème, tu peux mettre ton sujet en résolu.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 juin 2007 à 15:09:51

                      ben en fait j'attendais ton message (je n'ai pas trouvé de fonctions d'édition de mon post, et on ne peut poster deux fois d'affilé en moins de 24 heures)

                      ben en fait, j'ai toujours les mêmes erreurs à la compilation
                      mon nouveau Euro.cpp:
                      #include <iostream>
                      #include <string>
                      #include "Euro.h"

                      Euro::Euro() : m_montant(0), m_montantEnFrancs(0), m_montantEnDollars(0)
                      {

                      }

                      Euro::Euro(double montantEnEuros) : m_montant(montantEnEuros),  m_montantEnFrancs(0), m_montantEnDollars(0)
                      {

                      }

                      double Euro::convertirEnFrancs(double m_montant)
                      {
                              double montantconverti=m_montant*6.55957;
                              return montantconverti;
                      }

                      double Euro::convertirEnDollars(double m_montant)
                      {
                              double montantconverti=m_montant*1.27175;
                              return montantconverti;
                      }

                      double Euro::getMontant() const
                      {
                          return m_montant;
                      }
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        19 juin 2007 à 15:16:31

                        Bon, j'a fait un copier-coller de ton code, et je n'ai aucun problème (juste un oubli de const pour la méthode getMontant dans Euro.h).
                        Es-tu sûr que les fichiers Euro.cpp, Franc.cpp et Dollar.cpp ont bien été rajoutés dans ton projet ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 juin 2007 à 15:20:03

                          Oui, oui, j'ai quattre sources (main, franc, euro et dollar) et trois headers.
                          Je vais tenter sous anjuta (au lieu de codeblocks, pour voir si ça vientde lui)

                          Edit: ça marche sous anjuta (pas d'erreurs, bien que je n'arrive pas à créer d'executable) mais sous codeblocks ça bloque, je vais essayer de recréer un projet codeblocks et recompiler)

                          ça y est, merci beaucoup de votre aide, ça marche
                          j'ai recréé le projet sous code::blocks
                          et ça compile bien

                          je me demande bien quel bug il y a eu (ça me rassure parce qu'anjuta, kdevelopp, emacs ou vi, ça me tentait pas encore trop trop)
                          • Partager sur Facebook
                          • Partager sur Twitter

                          problèmes de compilation

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown