Partage
  • Partager sur Facebook
  • Partager sur Twitter

... does not name a type...

28 juin 2009 à 22:12:34

Bonjour!

J'ai créé deux classes: ville, et batiment.

dans ma classe ville, j'aimerais avoir un (pour commencer :p ) batiment.
Mais mon debugger m'affiche: 'Batiment' does not name a type
Je crois que c'est un probleme de header, mais j'en ai mis partout et pourtant ca ne fonctionne pas.
Peut-etre que je n'ai mis de trop... :euh:

Je vous passe mon code:

#include <iostream>
#include <string.h>
#include "Batiment.h"
#include "Ville.h"


using namespace std;

int main()
{
    return 0;
}


Ville.cpp

#include <iostream>
#include <string.h>
#include "Batiment.h"
#include "Ville.h"

using namespace std;


Ville.h

#ifndef VILLE_H_INCLUDED
#define VILLE_H_INCLUDED

#include <iostream>
#include <string.h>
#include "Batiment.h"

class Ville
{
    public:

    private:
        Batiment m_batiments;//Le debugger indique cette ligne
};

#endif // VILLE_H_INCLUDED


Batiment.cpp

#include <iostream>
#include <string.h>
#include "Batiment.h"
#include "Ville.h"

using namespace std;

Batiment::Batiment() : m_vie(100)
{

}


Batiment.h

#ifndef BATIMENT_H_INCLUDED
#define BATIMENT_H_INCLUDED

#include <iostream>
#include <string.h>
#include "Ville.h"


class Batiment
{
    public:
        Batiment();

    private:
        long m_vie;
};




#endif // BATIMENT_H_INCLUDED


Merci pour votre aide!
  • Partager sur Facebook
  • Partager sur Twitter
28 juin 2009 à 22:19:32

Il n'y a pas de .h à strng (et d'ailleur tu peus virer l'include de string et iostream ici)
Pour ton problème vite l'include de ville.h dans les fichier de batiment, d'ailleur tu n'aurais pas du les mettre, les header c'est pas au pif non plus.
  • Partager sur Facebook
  • Partager sur Twitter
FaQ : Fr | En 1 2 | C++11 | Template || Blog : Deloget | C++|Boost--Dev | C++Next | GotW || Installer Boost
29 juin 2009 à 1:08:25

Re-bonjour!

Déja merci pour ton aide, mais j'ai toujours quelques problemes...

Je reposte mon code que j'ai légerement changé ;)

#include <iostream>
#include <string>
#include "Position.h"
#include "Batiment.h"
#include "Ville.h"


using namespace std;

int main()
{
    return 0;
}


#include <iostream>
#include <string>
#include "Batiment.h"
#include "Ville.h"
#include "Position.h"

using namespace std;

Position::Position() : a(0)
{

}


#ifndef POSITION_H_INCLUDED
#define POSITION_H_INCLUDED


class Position
{
    public:
        Position();

    private:
        int a;

};

#endif // POSITION_H_INCLUDED



#include <iostream>
#include <string>
#include "Batiment.h"
#include "Ville.h"
#include "Position.h"

using namespace std;


#ifndef VILLE_H_INCLUDED
#define VILLE_H_INCLUDED

class Ville
{
    public:

    private:

        Position m_emplacement;
        Batiment m_batiments;

};

#endif // VILLE_H_INCLUDED


#include <iostream>
#include <string>
#include "Batiment.h"
#include "Ville.h"
#include "Position.h"


using namespace std;


void Batiment::construire(Position position)
{

}


BATIMENT.H

#ifndef BATIMENT_H_INCLUDED
#define BATIMENT_H_INCLUDED

class Batiment
{
    public:
        void construire(Position position);

    protected:
        Position m_position;
};


#endif // BATIMENT_H_INCLUDED



Cette fois-ci il me dit:

- 'Position' has not been declared
- ISO C++ forbids declaration of `position' with no type
- `Position' does not name a type
- `Position' does not name a type


Et il m'indique que l'erreur se trouve surtout dans batiment.h ...

Qelqu'un peut m'aider? :)
  • Partager sur Facebook
  • Partager sur Twitter
29 juin 2009 à 1:17:49

dans Ville.h et Batiment.h tu dois faire une #include "Position.h"
  • Partager sur Facebook
  • Partager sur Twitter
29 juin 2009 à 2:02:26

Merci, ca fonctionne!

mais comment savoir ou et quand utiliser un header??
Pourquoi dans ville.h je ne dois pas inclure batiment.h mais bien position.h?

Merci pour votre aide!
  • Partager sur Facebook
  • Partager sur Twitter
29 juin 2009 à 3:55:18

Citation : Franklin92

mais comment savoir ou et quand utiliser un header??


Quand tu dois utiliser ce qui se trouve dedans.
  • Partager sur Facebook
  • Partager sur Twitter
3 septembre 2018 à 14:01:00 - Message modéré pour le motif suivant : Le squattage de topic est interdit.