Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [Résolu]echec de composition de deux classes entre elles  (Lu 3232 fois)

0 Membres et 1 Invité sur ce sujet

Akoma

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
[Résolu]echec de composition de deux classes entre elles
« le: Décembre 07, 2013, 04:03:15 pm »
Bonjour,

J'ai un soucie au niveau d'une composition, je souhaiterai simplement déclarer et instancier un objet de classe A en tant qu'attribut d'une classe B.

J'utilise le tuto pour "Manage differents screen in a game"

Je vous met mon code.

cScreen.h
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
using namespace sf;
#ifndef CSCREEN_H_
#define CSCREEN_H_
class cScreen
{
public :
    virtual int run(RenderWindow *app)=0;
};

#endif /* CSCREEN_H_ */


Menu.h
/*
 * Menu.h
 *
 *  Created on: 2 déc. 2013
 *      Author: Altarrys
 */


#ifndef MENU_H_
#define MENU_H_

#include <exception>
#include <iostream>
#include <windows.h>
#include <cmath>
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <fstream>
#include "HighView.h"
#include "cScreen.h"

class Menu : public cScreen
{
private:
        HighView vueHaute;
        int movement_step;
        int posx;
        int posy;
        int tailleMap;
        int spawnX;
        int spawnY;
        int level[];
        int visibility;
        Clock clock;
        float speed;
        float elapsed;
        float deplacement;
        int i;

public:
        Menu (RenderWindow *app);
        int run (sf::RenderWindow *app);

};

#endif /* MENU_H_ */
 

Le probleme ici est qu'il ne reconnais pas HighView "could not be resolved" erreur.

et HighView.h
/*
 * HighView.h
 *
 *  Created on: 27 nov. 2013
 *      Author: Utilisateur
 */

#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <iostream>
#include "Map.h"
#ifndef HIGHVIEW_H_
#define HIGHVIEW_H_
using namespace sf;
namespace std {

class HighView{
public:
        HighView(int visibility, float spawnX, float spawnY);
        virtual ~HighView();
        void Move(float x, float y);
        void Draw(RenderWindow* window, Map map);

private:
        View vue;

};

} /* namespace std */
#endif /* HIGHVIEW_H_ */
 

« Modifié: Décembre 09, 2013, 07:38:13 pm par Akoma »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : echec de composition de deux classes entre elles
« Réponse #1 le: Décembre 07, 2013, 04:18:37 pm »
Citer
#include "cScreen.cpp"
???

Sinon, tu as sûrement un problème d'inclusions cyclique.
Laurent Gomila - SFML developer

Akoma

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Re : echec de composition de deux classes entre elles
« Réponse #2 le: Décembre 07, 2013, 04:34:03 pm »
J'ai corrigé le cScreen.cpp.

Mais le problème d'inclusion cyclique... je vois clairement pas d'où il pourrai venir.

J'ai réduis mes #include au maximum et j'ai bien fait attention à ce que HighView.h ne sois inclus que dans mon Menu.h  et que Menu.h ne le sois pas dans HighView.h (mes .cpp n’incluent que leur .h respectif)

Je vois que ça qui pourrai provoquer une inclusion cyclique... D'autre idées ?

EDIT : J'ai résolu le problème d'inclusion, mais c'est un nouveau type d'erreur que j'obtiens.
'HighView' does not name a type
« Modifié: Décembre 07, 2013, 04:40:35 pm par Akoma »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : echec de composition de deux classes entre elles
« Réponse #3 le: Décembre 07, 2013, 08:13:42 pm »
Map.h inclut quoi ?
Laurent Gomila - SFML developer

Akoma

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Re : echec de composition de deux classes entre elles
« Réponse #4 le: Décembre 09, 2013, 11:38:03 am »
Rien à par les biblio SFML et iostream.
Je joins un petit diagramme de mes includes.

FeelZoR

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : echec de composition de deux classes entre elles
« Réponse #5 le: Décembre 09, 2013, 03:57:33 pm »
Tu devrais déjà mettre tes includes dans le .h entre #ifndef et #endif
Débutant en C++ et SFML, qui tente tant bien que mal de se frayer un chemin parmi tous ces bons développeurs pour un jour (peut-être ?) être bon et pouvoir aider à son tour.

Akoma

  • Newbie
  • *
  • Messages: 7
    • Voir le profil
Re : echec de composition de deux classes entre elles
« Réponse #6 le: Décembre 09, 2013, 07:37:50 pm »
Tu devrais déjà mettre tes includes dans le .h entre #ifndef et #endif
Oui, c'est ce qu'ils m'ont dit sur le forum d'OpenClassRoom(lesiteduzero.com). ça a en effets résolue mon problème. ils m'ont aussi conseillé de mettre mes "using namespace" dans les fichiers source et non header. Mon problème est résolu j'édit le titre du sujet.

Merci à tous

FeelZoR

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : [Résolu]echec de composition de deux classes entre elles
« Réponse #7 le: Décembre 09, 2013, 08:09:20 pm »
Si tu peux même éviter d'utiliser les namespace ça serait toujours mieux, tu n'auras jamais aucun problème après lié au namespace... ;)
Débutant en C++ et SFML, qui tente tant bien que mal de se frayer un chemin parmi tous ces bons développeurs pour un jour (peut-être ?) être bon et pouvoir aider à son tour.