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

Autres éditeurs Discussion :

je ne comprends pas les message d'erreur g++


Sujet :

Autres éditeurs

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 313
    Points : 404
    Points
    404
    Billets dans le blog
    14
    Par défaut je ne comprends pas les message d'erreur g++
    C'est la première fois que je programme en C++ et voici ce que cela donne:
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    class de{
       private:
          int nbfaces;
       public:
          de(int initnbfaces){
             nbfaces=initnbfaces;
          }
          int lance(){
             return ( rand() % nbfaces ) + 1;
          }
    };
     
    class action{
       private:
          de le_de(20);
       public:
          action(){}
          bool reussite(int seuil,int modificateurs){
             return ( le_de.lance() + modificateurs ) >= seuil;
          }  
    };
     
    main(){
       action saut;
       srand(time((time_t*)0)%255);
       if(saut.reussite(10,0))
          cout<<"saut réussit";
       else
          cout<<"saut échoué";
    }
    quand je veux compiler:
    bash-3.00$ g++ -o dimimat dimimat.cpp
    dimimat.cpp:18: error: invalid data member initialization
    dimimat.cpp:18: error: (use `=' to initialize static data members)
    dimimat.cpp: In constructor `action::action()':
    dimimat.cpp:20: error: no matching function for call to `de::de()'
    dimimat.cpp:4: error: candidates are: de::de(const de&)
    dimimat.cpp:8: error: de::de(int)
    dimimat.cpp: In function `int main()':
    dimimat.cpp:28: error: `time' undeclared (first use this function)
    dimimat.cpp:28: error: (Each undeclared identifier is reported only once for
    each function it appears in.)
    dimimat.cpp:30: error: `cout' undeclared (first use this function)

    quelqu'un pourrais me dire où ça cloche?

  2. #2
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Il y a un forum C++, il faudrait demander qu'on y déplace cette question qui n'est en rien spécifique à Linux.

    Il y a une balise code, il faudrait l'utiliser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class action{
    private:
    de le_de;
    public:
    action() : le_de(20){}
    time est déclaré dans time.h

    cout est déclaré dans iostream, et il se trouve dans le namespace std.

    Tu n'utilises rien de stdio.h.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 313
    Points : 404
    Points
    404
    Billets dans le blog
    14
    Par défaut
    sinon, si j'écris comme ceci:
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    class de{
       private:
          int nbfaces;
       public:
          de(int initnbfaces);
          int lance();
    };
     
    de::de(int initnbfaces){
       nbfaces=initnbfaces;
    }
     
    int de::lance(){
       return ( rand() % nbfaces ) +1;
    }
     
    class action{
       private:
          de le_de(20);
       public:
          action(){}
          bool reussite(int seuil,int modificateurs);
    };
     
    action::action(){}
     
    bool action::reussite(int seuil,int modificateurs){
       return ( le_de.lance() + modificateurs ) >= seuil;
    }
     
    main(){
       action saut;
       srand(time((time_t*)0)%255);
       if(saut.reussite(10,0))
          cout<<"saut réussit";
       else
          cout<<"saut échoué";
    }
    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
    matser@ordimat:~/administration/projets/dimimat$ g++ -o dimimat dimimat.cpp
    dimimat.cpp:22: error: invalid data member initialization
    dimimat.cpp:22: error: (use `=' to initialize static data members)
    dimimat.cpp: In constructor `action::action()':
    dimimat.cpp:24: error: no matching function for call to `de::de()'
    dimimat.cpp:4: error: candidates are: de::de(const de&)
    dimimat.cpp:12: error:                 de::de(int)
    dimimat.cpp: At global scope:
    dimimat.cpp:28: error: redefinition of `action::action()'
    dimimat.cpp:24: error: `action::action()' previously defined here
    dimimat.cpp:28: error: no `action::action()' member function declared in class
       `action'
    dimimat.cpp: In constructor `action::action()':
    dimimat.cpp:28: error: no matching function for call to `de::de()'
    dimimat.cpp:4: error: candidates are: de::de(const de&)
    dimimat.cpp:12: error:                 de::de(int)
    dimimat.cpp: In function `int main()':
    dimimat.cpp:36: error: `time' undeclared (first use this function)
    dimimat.cpp:36: error: (Each undeclared identifier is reported only once for
       each function it appears in.)
    dimimat.cpp:38: error: `cout' undeclared (first use this function)

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 313
    Points : 404
    Points
    404
    Billets dans le blog
    14
    Par défaut
    Jean Marc, tu as raison, ça marche. mais nouveau problème:syntax eror
    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
    45
    46
    47
    48
    49
    50
    51
    52
     
    matser@ordimat:~/administration/projets/dimimat$ cat dimimat.cpp
    #include <stdlib.h>
    #include <time.h>
    #include <iostream>
     
    class de{
       private:
          int nbfaces;
       public:
          de(int initnbfaces);
          int lance();
    };
     
    de::de(int initnbfaces){
       nbfaces=initnbfaces;
    }
     
    int de::lance(){
       return ( rand() % nbfaces ) +1;
    }
     
    /*class action{
       private:
          de le_de(20);
       public:
          action(){}
          bool reussite(int seuil,int modificateurs);
    };
    */
    class action{
       private:
          de le_de;
       public:
          action() : le_de(20){}
     
     
    bool action::reussite(int seuil,int modificateurs){
       return ( le_de.lance() + modificateurs ) >= seuil;
    }
     
    main(){
       action saut;
       srand(time((time_t*)0)%255);
       if(saut.reussite(10,0))
          cout<<"saut réussit";
       else
          cout<<"saut échoué";
    }
     
    matser@ordimat:~/administration/projets/dimimat$ g++ -o dimimat dimimat.cpp
    dimimat.cpp:47: error: syntax error at end of input
    sachant que la ligne 47 est la toute dernière

    merci

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 313
    Points : 404
    Points
    404
    Billets dans le blog
    14
    Par défaut merci
    en ce qui conserne syntax error, j'avais oublié un '}'.
    j'ai un warning du à une close "#warning" dans iostream.h, mais bon, ce n'est qu'un warning...
    mon programme fonctione (juste ajouter '\n' pour l'invite de commande à la ligne suivante)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    ?
    "La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."

    G. CLEMENCEAU

  7. #7
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut
    Petite correction concernant les headers que tu inclus
    Tu fais du C++ et non du C, il y a quelques petits changements:


    <iostream.h> est maintenant <iostream>
    <stdlib.h> est maintenant <cstdlib>
    <stdio.h> est maintenant <cstdio>

    Ca t'évitera des lignes de codes obsolètes, et donc des warnings.

  8. #8
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par vdumont
    Petite correction concernant les headers que tu inclus
    Tu fais du C++ et non du C, il y a quelques petits changements:


    <iostream.h> est maintenant <iostream>
    <stdlib.h> est maintenant <cstdlib>
    <stdio.h> est maintenant <cstdio>

    Ca t'évitera des lignes de codes obsolètes, et donc des warnings.
    Si pour iostream je suis d'accord (d'ailleurs je n'avais pas mis de .h), pour les en-têtes hérités du C, j'ai une préférence pour garder leur forme C, pour deux raisons:
    1/ il y a des compilateurs -- dont gcc -- qui implémentent le comportement demandé pour la forme avec .h mais pas pour la forme sans (il faut dire qu'avoir un résultat conforme sans contrôler la libc, c'est pas possible et que gcc ne fournit pas la libc)
    2/ il y a des compilateurs qui avec la forme .h fournissent les extensions de l'OS et sans ne les fournissent pas. Même si je ne les utilise pas trop, ça m'arrive.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  9. #9
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut
    Je n'avais jamais vu ca sous ce point la Merci du tuyau.

Discussions similaires

  1. [VBA-Excel] Ne comprends pas le message d'erreur
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/05/2011, 16h49
  2. [Débutant] je ne comprends pas ce message d'erreur
    Par liogo dans le forum MATLAB
    Réponses: 4
    Dernier message: 06/04/2011, 14h37
  3. Je ne comprends pas les messages d'erreur
    Par warezeux dans le forum Débuter
    Réponses: 23
    Dernier message: 17/12/2010, 15h24
  4. Je ne comprends pas le message d'erreur
    Par amine_en_france dans le forum Langage
    Réponses: 8
    Dernier message: 06/06/2007, 16h48
  5. je ne comprends pas mon message d'erreur
    Par LeNeutrino dans le forum Windows Forms
    Réponses: 8
    Dernier message: 19/01/2007, 09h44

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