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

Langage C++ Discussion :

expected class-name before ‘{’ token la fameuse


Sujet :

Langage C++

  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut expected class-name before ‘{’ token la fameuse
    Salut à tous,
    je programme un jeu d'échecs en C++
    voila la structure :
    les fichiers hpp commencent tous par des
    #ifndef
    #define
    je pensais que ça évitait des inclusions multiples mais on dirait pas.
    la classe échiquier inclut les classes piece, roi, fou, tour ...
    et chacune d'elles(sauf piece) inclut piece.hpp pour faire

    class Roi :public Piece
    { ...

    mais à ce moment la le public Piece ne marche pas et j'ai l'erreur expected class-name before ‘{’ token.

    merci dvotre aide

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Par défaut
    il semble qu'il ne reconnait pas Piece comme étant une classe

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    si dans echiquier j'inclus seulement piece.hpp il n'y a aucun problème, Piece est reconnu dans l'héritage.
    si par contre j'inclus en plus tour.hpp par exemple la ça foire

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Par défaut
    En même temps je pense que l'échiquier n'a pas besoins de savoir de quel genre de pièce il est constitué apriori, enfin sa dépend de la conception que tu a fait.

    Piece n'inclue aucun des fichiers tour.hpp, fou.hpp, ... ?

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    en fait dans le constructeur de échiquier je voudrai remplir le plateau de jeu avec des pion des tours des cavaliers etc donc il faut bien que je fasse appel aux constructeurs spécifiques de chaque pièce.
    sinon j'aurais simplement un échiquier avec des pièces et pour vérifier que les déplacements sont bon je sais pas comment je ferai. alors qu'avec des pièces spécifiques j'ai une méthode qui vérifie le déplacement pour chaque sorte de pièce.

    pour répondre à la question, dans échiquier.hpp j'inclue piece.hpp et piece inclue echiquier.hpp car il en a besoin dans certaines méthodes.
    ensuite chaque sorte de pièce inclue sa classe mère piece.

    il se trouve aussi que si à la place d'inclure piece.hpp j'inclue par ex tour.hpp dans échiquier, j'ai la meme erreur.

    enfin je ne vois vraiment pasce qui cloche
    voila un bout de code ça sera ptetre plus clair.
    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
    #ifndef ECHIQUIER_HPP_
    #define ECHIQUIER_HPP_
     
    #include "piece.hpp"
    #include "tour.hpp"
    using namespace std;
    class Piece;
     
    class Echiquier
    {
    private:
    	Piece **plateau;
    public:
    	Echiquier();
    	void afficher();
    	Piece** getPlateau();
    };
     
    #endif /* ECHIQUIER_HPP_ */
    dans le cpp je voudrais donc pouvoir faire des new Tour();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #ifndef TOUR_HPP_
    #define TOUR_HPP_
    #include "piece.hpp"
     
     
    class Tour :public Piece
    {
    public:
    	Tour(char couleur='-', char type='-', int x=0, int y=0);
    	vector< pair<int, int> > chercherDeplacement();
    };
     
    #endif /* TOUR_HPP_ */
    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
    #ifndef PIECE_HPP_
    #define PIECE_HPP_
     
    #include "echiquier.hpp"
    #include <iostream>
    #include <vector>
    #include <utility>
    using namespace std;
     
    class Echiquier;
     
    class Piece
    {
    private:
    	char couleur; //B:blanc, N:noir, -:vide
    	char type; //P:pion, T:tour, C:cavalier, F:fou, D:dame, R:roi, -:vide
    	int x; //index de ligne
    	int y; //index de colonne
    	bool etats[8][8];
    etc etc

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Par défaut
    est il nécessaire que la classe piece connaisse l'échiquier ?
    si oui il faut que tu garde la déclaration "class Echiquier;" mais que tu supprime le "#include "echiquier.hpp" " pour le mettre dans le fichier Piece.cpp .

    En effet Echiquier.hpp inclue Piece.hpp qui inclue Echiquier.hpp , ... ect

    La garde n'empêche pas ce genre de problème, elle évite juste qu'on inclue plusieurs fois le même fichier (par exemple si tu inclus dans chaque classe echiquier.hpp sa ne sert a rien que se qu'il y a a l'intérieur soit exécuté plus d'une fois).

    Pour plus d'informations sur les inclusions cycliques -> FAQ

  7. #7
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    104
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 104
    Par défaut
    et bien merci beaucoup j'ai d'autres erreurs mais qui n'ont rien à voir.

    problème réglé

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/04/2010, 09h42
  2. Expected class-name before {
    Par Invité4 dans le forum C++
    Réponses: 10
    Dernier message: 23/03/2009, 21h24
  3. expected primary-expression before '=' token
    Par steph_p dans le forum Débuter
    Réponses: 4
    Dernier message: 02/02/2009, 16h03
  4. erreur: expected class-name before «{"
    Par mansour67 dans le forum wxWidgets
    Réponses: 7
    Dernier message: 08/04/2008, 18h57
  5. Réponses: 5
    Dernier message: 05/05/2006, 18h07

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