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 397
    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 397
    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