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 :

Pourquoi ces erreurs


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Par défaut Pourquoi ces erreurs
    Bonsoir tout le monde,
    Je suis en train de programmer un petit jeu de Puissance 4 en C++ sous CodeBlocks avec MinGW comme compileur et j'ai des erreurs de compilation lors de ma déclaration de classe.
    Donc en fait, j'ai fait une classe générique joueur voici le .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 JOUEUR_H_INCLUDED
    #define JOUEUR_H_INCLUDED
    #define NB_PION 21
     
    #include<stdio.h>
     
    #include "Jeu.h"
     
    class Joueur
    {
        public:
            Joueur(void);
            Joueur(char* coul);
            virtual ~Joueur();
            virtual int jouer();
     
            char* getCouleur() { return couleur;}
            void setCouleur(char* coul) {couleur = coul;}
            int getNbPion() {return nbPion;}
     
        protected:
            int nbPion;
            char* couleur;
    };
     
     
     
     
    #endif // JOUEUR_H_INCLUDED
    Et des classe qui l'hérite, JoueurHumain et JoueurOrdi (ici JoueurHumain):

    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
    #ifndef JOUEURHUMAIN_H_INCLUDED
    #define JOUEURHUMAIN_H_INCLUDED
     
    #include "Joueur.h"
     
    class JoueurHumain : public Joueur
    {
        public:
            JoueurHumain();
            JoueurHumain(char* coul);
            ~JoueurHumain();
            int jouer();
     
    };
     
    #endif // JOUEURHUMAIN_H_INCLUDED
    Je ne crois pas qu'il y' ait d'erreur dans mon code, a moins que je sois bigleu ou que je ne sais vraiment plus faire du C++... Pourtant, GCC m'affiche cette erreur à la compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: expected class-name before '{' token
    L'erreur est indiquée à la ligne juste en dessous la déclaration de ma classe JoueurHumain. Je vois vraiment pas pourquoi il me dit qu'il manque une accolade...
    Bref, c'est peut-être parceque je programme plus trop ces dernier temps mais je comprend vraiment pas la, si quelqu'un à une idée???

    Merci d'avance,
    A+
    Dede

  2. #2
    Sub
    Sub est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2003
    Messages : 20
    Par défaut
    Bonsoir.

    A première vue, et malgré mon grand manque d'expérience, il ne semble pas y avoir d'erreur dans le code présenté ici. En tout cas il compile avec MingW sous Code::Blocks.

    Peut-être l'erreur se trouve-t-elle dans "Jeu.h" ?

    Sinon, une petite remarque qui n'a rien à voir mais stdio.h c'est pas très C++
    Si vous tenez à utilisez les fonctions de la bibliothèque C utilisez <cstdio> qui redéfinit les fonctions de stdio.h à la sauce C++. Et plus généralement vous pouvez utilisez les bibliothèques standard du C en préfixant leur nom d'un 'c' et en supprimant le '.h'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include <cstdio>
    #include <cmath>
    etc

  3. #3
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Des énormes maladresses dans la gestion des chaine -- le genre qui provoquera une erreur (la FAQ est ton amie).
    Mais rien qui me semble justifier une erreur de compil. Il nous manque des billes.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    C'est probablement une erreur dans un autre fichier d'inclusion.
    Sinon, ça n'a rien à voir avec ton problème mais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #include <string>
    ...
    using namespace std;
    ...
    string couleur;
    ça fait tout de suite plus C++, et tu sentiras très vite l'amélioration dans la facilité d'utilisation.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Par défaut
    Merci pour vos réponses, je vais chercher dans les autres fichiers d'include...
    Pour le char* c'est qu'en fait on (des gens de ma classe et moi) avait commencé a faire le programme en C et j'ai pas tout convertis en C++.
    De plus, je ne vais plus me servir de chaîne de caractère donc même plus besoin de la STL ou de stdio.

    Bref, même s'il y'a un erreur dans un autre include, je ne comprend pas pourquoi il m'indique une erreur à cette endroit là... Bien que cela fait pas mal de temp que je fais du C++, j'ai toujours l'impression de ne rien y connaître, c'est un langage tellement complexe et complet à la fois...

    Enfin bon... je continus de chercher.

    Merci,

    A+

    dede

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Par défaut
    Bon... Je devais être bien fatigué hier soir, j'ai pas vu qu'il y'avait un conflit d'include dans mon fichier Jeu.h qui prenait en include Joueur.h et JoueurOrdi.h et JoueurHumain.h... Donc mon problème est résolu!!

  7. #7
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 55
    Par défaut
    Citation Envoyé par Luc Hermitte
    Des énormes maladresses dans la gestion des chaine -- le genre qui provoquera une erreur (la FAQ est ton amie).
    Mais rien qui me semble justifier une erreur de compil. Il nous manque des billes.
    Du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void setCouleur(char* coul) {couleur = coul;}
    Ca me donne des frissons dans le dos! Utilise la fonction strcpy!!!!

    JC

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Citation Envoyé par jc_isd
    Utilise la fonction strcpy!!!!
    Perdu, en C++, on utilise des std::string.

    Et moi en C, j'aurais utilisé strdup() ou strlen()+malloc()/new[]+strcpy()
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 55
    Par défaut
    Citation Envoyé par Médinoc
    Perdu, en C++, on utilise des std::string.

    Et moi en C, j'aurais utilisé strdup() ou strlen()+malloc()/new[]+strcpy()
    Salut!

    Je ne suis pas tout a fait d'accord avec toi... Il est vrai que la STL donne un très grand coup de main pour la manipulation de chaine de caracteres (entre autres), que c'est plus clair, propre etc... (et que je l'utilise moi meme egalement)
    Mais dans ce cas précis, ma remarque portait sur le type utilisé par l'utilisateur ( char* ) et des fonctions 'classiques' relatives à ce type (très 'C' je le reconnais, mais que ce soit en C ou en C++, une copie de pointeur n'équivqut pas à une copie de contenu, ca aussi c'est clair).
    Je pense qu'il est nécessaire de réveler les erreurs plutot que de les eluder directement en donnant une autre voie. Car si un jour la personne en question doit (imperativement) utiliser des char* pour une (bonne) raison ou une autre, il sera encore dans le pétrin.
    Attention, je ne dis pas qu'il ne faut pas donner d'autres pistes de solution, mais (au risque de me repeter) seulement apres la justification de l'erreur en elle-meme.

    D'ailleurs c'est finalement un peu ce que tu fais mais à l'envers dans ta réponse.

    Je ne tiens pas a ce que cela parte en troll, mais je tenais à répondre car le "Perdu" a un peu chatouillé mon ego

    A++

    JC

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/04/2008, 04h33
  2. [C#] Pourquoi une erreur System sur la commande ExecuteReader ?
    Par heavydrinker dans le forum Accès aux données
    Réponses: 4
    Dernier message: 31/07/2006, 16h05
  3. [C#]Pourquoi cette erreur à la suppression d'un repertoire ?
    Par prince_antonio dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/07/2006, 17h47
  4. Pourquoi l'erreur "#Erreur" ?
    Par pyxosledisciple dans le forum Access
    Réponses: 2
    Dernier message: 05/05/2006, 09h24
  5. Pourquoi ces directives #ifndef ... en haut des .h
    Par Patrick PETIT dans le forum C
    Réponses: 8
    Dernier message: 06/03/2003, 23h53

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