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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : développeur à la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 391
    Billets dans le blog
    16
    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 confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    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.

  3. #3
    Membre éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : développeur à la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 391
    Billets dans le blog
    16
    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 éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : développeur à la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 391
    Billets dans le blog
    16
    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 éclairé

    Homme Profil pro
    développeur à la maison
    Inscrit en
    Septembre 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : développeur à la maison

    Informations forums :
    Inscription : Septembre 2006
    Messages : 391
    Billets dans le blog
    16
    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 chevronné
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par défaut
    ?

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    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 confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    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.

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