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 :

[erreur syntaxe] error: `TPersonnage' was not declared in this scope


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 11
    Points
    11
    Par défaut [erreur syntaxe] error: `TPersonnage' was not declared in this scope
    Depuis quelque jour je code un petit jeu pour améliorer mes connaissances en programmation.
    J'ai une classe TPersonnage qui jusqu'a vendredi ne posais pas de problème et depuis hier impossible de compiler mon projet à cause de cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    E:\Mes documents\Texte\tpopulation.h:17: error: ISO C++ forbids declaration of `TPersonnage' with no type
    E:\Mes documents\Texte\tpopulation.h:17: error: expected `;' before '*' token
    E:\Mes documents\Texte\tpopulation.h:21: error: `TPersonnage' was not declared in this scope
    E:\Mes documents\Texte\tpopulation.h:21: error: template argument 1 is invalid
    E:\Mes documents\Texte\tpopulation.h:21: error: template argument 2 is invalid
    E:\Mes documents\Texte\tpopulation.h:21: error: ISO C++ forbids declaration of `peuple' with no type
    :: === Build finished: 6 errors, 0 warnings ===

    Je pense que ca vient d'une erreur de syntaxe mais je n'arrive pas à la retrouver.

    voici le code où ca bloque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TPersonnage* Get(int id);
    extrait de

    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
     
    #ifndef TPOPULATION_H
    #define TPOPULATION_H
     
    #include <vector>
    #include "tpersonnage.h"
    #include <string>
    #include "TBiblio.h"
     
     
    class TPopulation
    {
        public:
            TPopulation();
            void Add(int id, std::string nom , int texture,double direction,double x, double y);
            void LoadFromFile(std::string source);
            void Draw(TBiblio *biblio);
            TPersonnage* Get(int id);
            ~TPopulation();
        protected:
        private:
        std::vector <TPersonnage> peuple;
    };
     
     
     
    #endif // TPOPULATION_H
    le fichier.cpp correspondant

    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
    72
     
    #include "tpopulation.h"
     
    #include "tpersonnage.h"
    #include  <vector>
    #include "TBiblio.h"
    #include <fstream>
     
    using namespace std;
     
     
    TPopulation::TPopulation()
    {
        //ctor
    }
     
    void TPopulation::Add(int id, std::string nom , int texture,double direction,double x, double y)
    {
        TPersonnage personne(id, nom, texture,direction,x,y);
        peuple.push_back(personne);
    }
     
    void TPopulation::Draw(TBiblio *biblio)
    {
        for (unsigned int i=0; i<peuple.size();i++)
        {
     
            TPersonnage land=peuple[i];
            land.Draw(biblio);
     
        }
    }
     
    void TPopulation::LoadFromFile(std::string source)
    {
        ifstream f(source.c_str());
        int n;
        int id;
        string nom;
        int texture;
        double x;
        double y;
        double direction;
     
     
        f>>n;
        for (int i=0;i<n;i++)
        {
            f>>id;
            f>>nom;
            f>> texture;
            f>> direction;
            f>> x;
            f>> y;
     
            Add(id,nom,texture,direction,x,y);
        }
        f.close();
    }
     
    TPersonnage* TPopulation::Get(int id)
    {
        TPersonnage* personne= &peuple[id];
        return personne;
     
    }
     
     
    TPopulation::~TPopulation()
    {
        //dtor
    }

    et voici ma classe :

    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    #include "tpersonnage.h"
     
    #include <string>
    #include "TBiblio.h"
    #include <math.h>
    #include "constantes.h"
    #include "tmap.h"
    #include "tterrain.h"
    #include <iostream>
     
    using namespace std;
     
     
    TPersonnage::TPersonnage()
    {
     
        //ctor
    }
     
    TPersonnage::TPersonnage(int id, std::string nam , int texture,double direction,double x, double y)
    {
        this->id=id;
        this->texture=texture;
        this->nom= nam;
        this->direction=direction;
        this->position.x=x;
        this->position.y=y;
     
        //ctor
    }
     
    void TPersonnage::Draw(TBiblio *biblio)
    {
        glTranslated(position.x,position.y,0);
        glRotated(direction,0,0,1);
        glBindTexture(GL_TEXTURE_2D, biblio->Get(texture));
        glBegin(GL_QUADS);
        glTexCoord2i(0,0);
        glVertex2d(-16,-16);
        glTexCoord2i(1,0);
        glVertex2d(16,-16);
        glTexCoord2i(1,1);
        glVertex2d(16,16);
        glTexCoord2i(0,1);
        glVertex2d(-16,16);
        glEnd();
     
    glDisable(GL_TEXTURE_2D);
        glBegin(GL_LINES);
         glVertex2d(0,50);
             glVertex2d(0,0);
        glEnd();
     
            glEnable(GL_TEXTURE_2D);
        glTranslated(-position.x,-position.y,0);
        glRotated(-direction,0,0,1);
        glLoadIdentity();
    }
     
    void TPersonnage::Walk(Uint32 temps, double angle, TMap *carte)
    {
        TPosition lastPostion=position;
        double distance= temps*0.2;
        direction=angle;
        position.x+=cos(angle*PI/180)*distance;
        position.y+=sin(angle*PI/180)*distance;
        for (int i=0;i<carte->GetSize();i++)
        {
            TTerrain* terre= carte->Get(i);
            bool rep =terre->IsOnRect(&position);
            if (rep==true&& terre->GetTexture()==1) position=lastPostion;
        }
    }
     
     
     
    TPosition TPersonnage::GetPosition()
    {
     
        return position;
     
        }
     
    /*TPersonnage::~TPersonnage()
    {
        //dtor
    }*/

    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
     
    #ifndef TPERSONNAGE_H
    #define TPERSONNAGE_H
     
     
    #include <string>
    #include "TBiblio.h"
    #include "tmap.h"
    #include "constantes.h"
    #include "tscene.h"
     
     
     
    class TPersonnage
    {
    public:
        TPersonnage();
        TPersonnage(int id, std::string nam , int texture,double direction,double x, double y);
        void Draw(TBiblio *biblio);
        void Walk(Uint32 temps, double angle, TMap *carte);
        TPosition GetPosition();
        //~TPersonnage();
    protected:
    private:
        int id;
        std::string nom;
        int texture;
        double direction;
        TPosition position;
        //TAction action;
    };
     
     
     
    #endif // TPERSONNAGE_H
    Je vous remercie d'avance pour l'aide que vous pourriez m'apporter

  2. #2
    Membre régulier Avatar de fdubks
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 73
    Points : 81
    Points
    81
    Par défaut
    Salut,

    J'ai eu un problème presque similaire, cela venait du name space.
    En fait, il été necessaire de declarer le name space identique dans mes deux fichiers .h, et de l'utiliser dans les fichiers CPP.

    Peut etre ton probleme vient-il egalement de là ?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Points : 240
    Points
    240
    Par défaut
    Ca semble être typiquement une erreur d'inclusion. Vérifie que tu n'as pas oublié de point virgule à la fin de fichier que tu inclus, qu'il n'y a pas deux fichiers qui s'incluent réciproquement, ect.

    Je voudrais bien t'aider plus, surtout que j'ai déjà eu cette erreur mais je ne me souviens plus à quelle occasion, désolé !

    Bonne chance dans ta chasse aux bugs.
    ++

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Merci pour vos réponses.

    A force de bidouiller dans mes fichiers j'ai réussi à corriger l'erreur.
    J'ai bien failli tout balancer
    C'était une erreur d'inclusion

    En tout cas pour votre aide

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/12/2013, 18h13
  2. Réponses: 4
    Dernier message: 31/07/2013, 16h02
  3. QLabel et erreur "ui was not declared in this scope"
    Par sosdouble dans le forum Débuter
    Réponses: 1
    Dernier message: 24/04/2012, 19h42
  4. Erreur : "was not declared in this scope"
    Par Neirbo dans le forum Débuter
    Réponses: 4
    Dernier message: 22/02/2010, 12h55
  5. error : 'tr' was not declared in this scope
    Par jimaitou dans le forum Débuter
    Réponses: 3
    Dernier message: 13/05/2009, 13h54

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