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 :

Expected class-name before {


Sujet :

C++

Vue hybride

Invité Expected class-name before { 23/03/2009, 09h46
3DArchi Bonjour, A priori je dirais... 23/03/2009, 10h00
Invité Merci, effectivement, car... 23/03/2009, 14h10
3DArchi Salut, Je ne vois pas... A... 23/03/2009, 14h20
méphistopheles à titre indicatif, que se... 23/03/2009, 14h50
r0d Ça me parait effectivement le... 23/03/2009, 14h57
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité4
    Invité(e)
    Par défaut Expected class-name before {
    Bonjour,

    je code un petit programme avec CodeBlocks.
    En compilant, j'ai cette erreur étrange :
    Projet C++\AntSimulator\NormalCell.h|8|error: expected class-name before '{' token|
    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
    #ifndef NCELL_H_INCLUDED
    #define NCELL_H_INCLUDED
     
    #include "Utilities.h"
    #include "Cell.h"
    #include "Definitions.h"
     
    class NormalCell : protected Cell
    { // <---- Erreur survient ici
        public:
        virtual ~NormalCell();
        int getFoodQuantity() const;
        void setFoodQuantity(int);
        int getFoodQuality() const;
        void setFoodQuality(int);
        void removeOneFood();
        virtual bool isWalkable();
        virtual CellType getType() const;
        virtual bool isNormal();
     
        private:
        uint FoodQuality;
        uint FoodQuantity;
    };
     
    #endif
    Savez-vous ce que c'est ?
    Merci, meilleures salutations.
    Dernière modification par 3DArchi ; 21/05/2011 à 10h03.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour,
    A priori je dirais qu'il ne reconnaît pas Cell. A quoi ressemble "Cell.h" ?

  3. #3
    Invité4
    Invité(e)
    Par défaut
    Merci,
    effectivement, car plus bas, j'ai une autre erreur "Cell does not name a type."

    Voici Cell.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
    #ifndef CELL_H_INCLUDED
    #define CELL_H_INCLUDED
     
    #include "Definitions.h"
    #include "Utilities.h"
    #include "Application.h"
     
    class Cell
    {
        public:
        Cell();
        ~Cell();
     
        void dropPheromon(double);
        double getPheromon(void) const;
        void setPheromon(double);
     
        virtual bool isWalkable(void);
        virtual CellType getType(void) const;
        virtual bool isNormal(void);
     
        protected:
        double PheromonQuantity;
        int pheromonThreshold;
        Configure config;
    };
     
    #endif // CELL_H_INCLUDED

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Salut,
    Je ne vois pas... A moins que tu aies une inclusion récursive cachée (dans "Application.h" ?) A quoi ressemblent "Application.h", "Utilities.h" et "Definitions.h" ?

  5. #5
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    à titre indicatif, que se passe-t'il si tu n'inclus que "Cell.h" dans "NormalCell.h" ?

  6. #6
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    A moins que tu aies une inclusion récursive cachée
    Ça me parait effectivement le plus probable.
    De façon générale, il faut éviter autant que possible les #include dans des en-tête, quitte à utiliser, si besoin, des prédéclations. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #ifndef B_H
    #define B_H
     
    class A; // pré déclaration de A
     
    class B
    {
    //...
        A* a; // utilisation d'un pointeur sur A. A.h devra être inclus dans B.cpp
    };
     
    #endif

  7. #7
    Invité4
    Invité(e)
    Par défaut
    Citation Envoyé par méphistopheles Voir le message
    à titre indicatif, que se passe-t'il si tu n'inclus que "Cell.h" dans "NormalCell.h" ?
    Même problème




    Citation Envoyé par 3DArchi Voir le message
    Salut,
    Je ne vois pas... A moins que tu aies une inclusion récursive cachée (dans "Application.h" ?) A quoi ressemblent "Application.h", "Utilities.h" et "Definitions.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
    #ifndef APPLICATION_H_INCLUDED
    #define APPLICATION_H_INCLUDED
     
    #include "Utilities.h"
    #include "Engine.h"
    #include "world.h"
     
    int main(int argc, char **argv);
     
    class Application
    {
        public:
        Application(string configfile);
        bool run(void);
        static string getConfigFile(void);
     
        private:
        Engine engine;
        Configure config;
        uint elapsedTime; // en secondes
        World environment;
        static string configFile;
     
    };
     
    #endif // APPLICATION_H_INCLUDED
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    #ifndef UTILITIES_H_INCLUDED
    #define UTILITIES_H_INCLUDED
     
    #ifdef WIN32
        #include <Windows.h>
    #else
        #include <unistd.h>
    #endif
    using namespace std;
    typedef unsigned int uint;
     
    #include <string>
    #include <vector>
    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <queue>
     
    /* Configure
        Lit un fichier de configuration.
        Chaque paramètre est situé sur une ligne
        : sépare le paramètre de sa valeur
        Exemple
            size:17
        Les commentaires sont autorisés et sont précédés de deux backslashes //
        Exemple
            // Taille
            size:17
     
            // Auteur
            author:Benjamin
    */
     
    void pSleep(uint ms);
     
    class Configure
    {
        public:
        // Constructeur
        void load(string file);
        string getParameterValue(string parameter);
        int getiParameterValue(string parameter);
        string getConfFile(void);
     
        private:
        ifstream filestream;
        vector<string> Parameters;
        vector<string> Values;
        string conffile;
     
    };
     
    /* Vec2i
        Classe permettant un vecteur de type int à deux dimensions
    */
    class Vec2i
    {
        public:
        Vec2i(int sx, int sy);
        int getX(void);
        int getY(void);
        void setX(int& sx);
        void setY(int& sy);
        void set(int& sx, int& sy);
     
        private:
        int x, y;
    };
     
     
    #endif // UTILITIES_H_INCLUDED
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #ifndef DEFINITONS_H_INCLUDED
    #define DEFINITONS_H_INCLUDED
     
    typedef unsigned short int CellType;
     
    #define Cell_Undefined 0
    #define Cell_Normal 1
     
     
     
     
    #endif // DEFINITONS_H_INCLUDED

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/04/2010, 09h42
  2. expected class-name before ‘{’ token la fameuse
    Par frboyer dans le forum Langage
    Réponses: 6
    Dernier message: 13/04/2010, 18h11
  3. erreur: expected class-name before «{"
    Par mansour67 dans le forum wxWidgets
    Réponses: 7
    Dernier message: 08/04/2008, 18h57
  4. Réponses: 5
    Dernier message: 05/05/2006, 18h07
  5. Class Name
    Par socrate dans le forum MFC
    Réponses: 5
    Dernier message: 22/05/2005, 18h20

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