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 :

Probleme de compilation C++


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    134
    D�tails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 134
    Par d�faut Probleme de compilation C++
    j ai une classe voiture :
    voiture.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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    #ifndef VOITURE_H
    #define VOITURE_H
    #include "cdate.h"
    #include "cloc.h"
    #include <string>
    #include <list>
    using namespace std;
     
     
    class Voiture {
     public:
      Voiture(); 
      Voiture(const string, const int, const string,const list<CLoc>);
      ~Voiture();
      int GetKm() const;
      void SetKm(int);
      string GetIm();
      void SetIm(string);
      string GetMarque();
      void SetMarque(string);
      void Affiche() ;
      // list<CLoc> loc;
      void ajouterLoc (CLoc);
      void test (int i);
     
     private:
      string immatriculation;
      int kilometrage;
      string marque;
      list<CLoc> loc; //liste contenant les location
      list<int> ls; //juste pour test
    };
     
    #endif
    voici le voiture.cc
    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
     
    #include "cvoiture.h"
    #include "cloc.h"
    #include "cdate.h"
    #include <list>
    #include <string>
    #include <iostream>
    using namespace std;
     
    Voiture::Voiture() {}
     
    Voiture::Voiture(const string im, const int km, const string marq,const list<CLoc> location)
     
     {
      immatriculation=im;
      kilometrage=km;
      marque=marq;
     
      }
     
    Voiture::~Voiture() {
     
    }
     
    void Voiture::ajouterLoc (CLoc c) {
     
      loc.push_front(c);//
    COMPILE errueur:
    /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_construct.h: In function `void std::_Construct(_T1*, const _T2&) [with _T1 = CLoc, _T2 = CLoc]':
    /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_list.h:438: instantiated from `std::_List_node<_Tp>* std::list<_Tp, _Alloc>::_M_create_node(const _Tp&) [with _Tp = CLoc, _Alloc = std::allocator<CLoc>]'
    /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_list.h:1163: instantiated from `void std::list<_Tp, _Alloc>::_M_insert(std::_List_iterator<_Tp>, const _Tp&) [with _Tp = CLoc, _Alloc = std::allocator<CLoc>]'

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
     
    }
     
    void Voiture::test (int i) {
     
      ls.push_front(i);
    COMPILE OK
    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
     
    }
     
    int Voiture::GetKm() const
    {
      return kilometrage;
    }
    void Voiture::SetKm(int km) {
      kilometrage=km;
    }
    string Voiture::GetIm() {
      return immatriculation;
    }
    void Voiture::SetIm(string im) {
      immatriculation=im;
    }
    string Voiture::GetMarque() {
      return marque;
    }
    void  Voiture::SetMarque(string m) {
      marque=m;
    }
    void Voiture::Affiche()  {
       cout<<"________Voiture________"<<endl;
       cout<<"immatriculation : "<<GetIm()<<endl;
       cout<<"Kilométrage     : "<<GetKm()<<endl;
       cout<<"Marque          : "<<GetMarque()<<endl;
     
    }
    Alors pourquoi alors que je peux manipuler ma liste d'entier, je ne peux pas manipuler ma liste de CLoc, il s agit d'une classe contenant (deux date s et un bool�ens). Il semble peut etre qu'il y ait un probleme de constructeur??? Je suis perdu.[/code]

  2. #2
    Membre confirm� Avatar de BigNic
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    195
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 195
    Par d�faut
    Cloc a-t-il un constructeur par d�faut et un constructeur par copie ?
    Sont-ils tous les deux public ?
    Peux-tu nous donner Cloc.h ?
    ok je t'aide pas trop l�, mais c'est histoire de faire avancer le shmilimmilimblic

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    31
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 31
    Par d�faut
    Une chose qui m'agresse les yeux quand je lit ton code, c'est que tu passe tout par valeur :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Voiture::Voiture(const string im, const int km, const string marq,const list<CLoc> location)
    Signifie que tu vas faire une copie inutile de im, marq et location. Je te dit pas le gachi m�moire et cpu si ce sont de gros objets. Utilise les r�f�rences pour �viter �a.
    Tu trouveras une explication sur ce que c'est ici :
    http://cpp.developpez.com/cours/cpp/

    Ensuite, pourquoi passes-tu location dans tes arguments si tu ne t'en sert pas ?
    D'ailleur, j'ai l'impression que ton compilateur gueule par ce qu'il n'arrive justement pas � trouver comment recopier cette liste.

    Et pour finir, tu devrais lire �a :
    http://c.developpez.com/faq/cpp/?pag...EUR_liste_init

    Reviens nous voir si tu as toujours ton probl�me apr�s �a.

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    134
    D�tails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 134
    Par d�faut
    cloc.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
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    #ifndef LOC_H
    #define LOC_H
    #include <iostream>
    #include "cdate.h"
    #include <list>
    using namespace std;
     
    class CLoc {
     public:
      CLoc();
      CLoc(bool,CDate,CDate);
      //constructeur de copie
      CLoc(CLoc &o);
      ~CLoc();
      bool GetLoue ();
      void SetLoue (bool);
      CDate GetDeb();
      void SetDeb(CDate);
       CDate GetFin();
       void SetFin(CDate);
     private:
      bool loue;
      CDate debut;
      CDate fin;
     
    };
     
    #endif
    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
     
    #include <cassert>
    #include <string>
    #include <iostream>
     
    using namespace std;
    #include "cloc.h"
    #include "cdate.h"
    CLoc::CLoc() {}
    CLoc::CLoc(bool l,CDate d,CDate f) {
      loue=l;
      debut=debut;
      fin=f;
    }
    CLoc::CLoc(CLoc &o) {
      loue=o.GetLoue();
      debut=o.GetDeb();
      fin=o.GetFin();
    }
    CLoc::~CLoc () {}
    bool CLoc::GetLoue () {
      return loue;
    }
    void CLoc::SetLoue ( bool b ) {
      loue=b;
    }
     
    CDate CLoc::GetDeb () {
      return debut;
    }
    void CLoc::SetDeb ( CDate deb ) {
      debut=deb;
    }
    CDate CLoc::CLoc::GetFin () {
      return fin;
    }
    void CLoc::SetFin ( CDate f ) {
      fin=f;
    }

  5. #5
    Membre confirm� Avatar de BigNic
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    195
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 195
    Par d�faut
    � part les intialisateurs dans les constructeur comme te l'a fais remarquer Julien, je ne voit rien de qui cloche.
    Quand j'ai 5 misn je test au compilo chez moi.

  6. #6
    Membre confirm� Avatar de BigNic
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    195
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 195
    Par d�faut
    bon alors je devais pas avoir les yeux en face des trous car ce sont des erreurs classique que tu as fait.

    1) le constructeur par copie utilis� par la liste (et beacoup d'autres conteneur s STL) est:
    et non pas comme tu l'avais mis. un petit const �a change tout !

    2) si tu fais �a tu doit changer le proto des fonctions appell�es dedans. en effet ta r�f�rence �tant const, tu n'a le droit d'appeler dessus que des m�thodes const. Donc il faut que tu modifes tes accesseurs en lectures de ta classe Cloc.

    Sinon tu devrait fair un peu le m�nage dans ton code. Il ya des #includes sur des header non utilis� et les using namespace il vaut mieux eviter dans les
    header.

    Si cela fonctionne pense � cliquer sur r�solu.

  7. #7
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    Voiture::~Voiture() {
     
    }
    Ca sert a quoi?

    A respecter la forme canonique de Coplien?

  8. #8
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Une petite remarque : il faut �viter les "using namespace" dans les .h:
    http://c.developpez.com/faq/cpp/?pag...sing_namespace

  9. #9
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    134
    D�tails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 134
    Par d�faut
    Merci .
    effectivement il faut :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    CLoc (const CLock ..)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [API][Cup] problem niveau compilation
    Par KoLziG dans le forum G�n�ral Java
    R�ponses: 1
    Dernier message: 02/01/2005, 19h30
  2. [JSP & TAGLIB] Probleme de compilation
    Par GesMo dans le forum Servlets/JSP
    R�ponses: 7
    Dernier message: 17/05/2004, 15h03
  3. Probleme de Compilation de la STL
    Par stoluup dans le forum MFC
    R�ponses: 3
    Dernier message: 05/05/2004, 17h25
  4. [TP]Probleme de compilation sous TP7
    Par yffick dans le forum Turbo Pascal
    R�ponses: 7
    Dernier message: 18/12/2003, 20h32
  5. Problemes de compilation avec g++ sous linux
    Par Selimmel dans le forum Autres �diteurs
    R�ponses: 3
    Dernier message: 19/09/2003, 13h43

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