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 utilisation d'une Class dans une autre Class


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2003
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2003
    Messages : 8
    Points : 6
    Points
    6
    Par défaut probleme utilisation d'une Class dans une autre Class
    Bonjour!
    Le concept de Class et de programmation objet est tout nouveau pour moi, c'est pour cela que je vous demande votre aide qui me sera bien precieuse

    Voila je souhaiterai utiliser un objet de type "Adresse" (une classe que j'ai defini) dans un objet de type "Batiment", vous l'aurez compri l'objet "Adresse" sera utilisé dans l'objet "Batiment" :

    Voici mon code , ça serait plus clair

    Code de la classe Adresse:
    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
     
    class Adresse{
    	  int NumeroRue;
          char NomRue[20];
          int CodePostal;
    	  char NomVille[20];
     
          public:
     
                 Adresse(){   
                 //1er constructeur qui initialise les champs à 00 et à XXXXXXX
                 NumeroRue=00;
                 char NomRue[20] = "xxxxxx";
                 strcpy(this->NomRue,NomRue);
                 CodePostal=0000;
                 strcpy(NomVille,NomRue); }
     
     
                 Adresse(int NumeroRue,char NomRue[20],int CodePostal,char NomVille[20]){
                 //2e constructeur qui initialise les champs aux valeurs definies pas l'utilisateur
    	         this->NumeroRue = NumeroRue;
                 this->CodePostal = CodePostal;
                 strcpy(this->NomRue,NomRue);
                 strcpy(this->NomVille,NomVille); }
     
                 void AfficherAdresse(){
                 cout<<NumeroRue<<" rue "<<NomRue<<". "<<CodePostal<<" - "<<NomVille<<endl; }
     
    /*On peut initialiser un objet Adresse de deux façons:
    soit:     Adresse dupont;       
    ce qui aura pour conséquence de creer une adresse dupont contenant des 00 et des xxxx
     
    soit:     Adresse dupont(15,"liberation",33000,"bordeaux");
    ce qui remplira l'objet dupont de type Adresse par les valeurs fournie (15,liberation,bordeaux...)
    */
    };


    et maintenant voici le code de la classe Batiment:
    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
     
    class Batiment{
          Adresse AdresseBatiment;
          char Proprietaire[30];
          float Valeur;
     
          public:
                 //1er constructeur initialisateur à 0000 et xxxxx
                 Batiment(){
     
                 Valeur=000000.000000;
                 char Proprietaire[30] = "xxxxxx";
                 strcpy(this->Proprietaire,Proprietaire);
                 }
     
                 void AfficherInfosBatiment(){
               cout<<"Adresse: "<<AdresseBatiment.AfficherAdresse()<<endl;
                 cout<<"Proprietaire: "<<Proprietaire<<endl;
                 cout<<"Valeur: "<<Valeur<<endl;
                 }   
     
    };
    Voila le probleme vient evidement de mon cout AdresseBatiment.AfficherAdresse() ,

    dans mon main j'ai fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Batiment A;
    A.AfficherInfosBatiment();
    je m'attends a ce que mon programme m'affiche:
    00 rue xxxxxxxxx. 0000 - xxxxxxxxx
    xxxxxxx
    0000000.000000

    alors qu'il fait une erreur de compilation
    la solution est certainement evidente mais comprenez moi, je ne sais pas grand chose des classes.
    Alors je fais comment pour afficher l'adresse ?

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    On ne sait même pas ce qu'il y a comme erreur, comment veux-tu qu'on réponde ??

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2003
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2003
    Messages : 8
    Points : 6
    Points
    6
    Par défaut classe dans classe
    oups desolé je pensai que l'erreur allait être evidente ....

    Je vous fais un copier-coller de la sortie de mon compilateur:

    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
    Compilateur: Default compiler
    Building Makefile: "C:\ClassBatiment\Makefile.win"
    Exécution de  make...
    make.exe -f "C:\ClassBatiment\Makefile.win" all
    g++.exe -c main_Exo2.cpp -o main_Exo2.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include"  -I"C:/Dev-Cpp/include/c++/3.4.2/backward"  -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32"  -I"C:/Dev-Cpp/include/c++/3.4.2"  -I"C:/Dev-Cpp/include"   
    
    main_Exo2.cpp: In member function `void Batiment::AfficherInfosBatiment()':
    main_Exo2.cpp:56: error: no match for 'operator<<' in 'std::operator<< [with _Traits = std::char_traits<char>](((std::basic_ostream<char, std::char_traits<char> >&)(&std::cout)), ((const char*)"Adresse: ")) << ((Adresse*)this)->Adresse::AfficherAdresse()'
    C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:63: note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>&(*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:74: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ios<_CharT, _Traits>&(*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:86: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base&(*)(std::ios_base&)) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:121: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:155: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:98: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/ostream:178: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/ostream:189: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/ostream:193: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/ostream:204: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
    
    C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:179: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:214: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:238: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/ostream:219: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:261: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:284: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:307: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::char_traits<char>]
    
    C:/Dev-Cpp/include/c++/3.4.2/ostream:449: note:                 std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, char) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:505: note:                 std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, char) [with _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/ostream:460: note:                 std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, signed char) [with _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/ostream:465: note:                 std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, unsigned char) [with _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:567: note:                 std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const char*) [with _CharT = char, _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/bits/ostream.tcc:612: note:                 std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const char*) [with _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/ostream:499: note:                 std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const signed char*) [with _Traits = std::char_traits<char>]
    C:/Dev-Cpp/include/c++/3.4.2/ostream:504: note:                 std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const unsigned char*) [with _Traits = std::char_traits<char>]
    
    make.exe: *** [main_Exo2.o] Error 1
    
    Exécution terminée

  4. #4
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2003
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2003
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    oulaaa c t trop con, comme AfficherAdresse() utilisait deja un cout il ne fallait donc pas la mettre dans un cout....
    probleme resolu

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

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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