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 :

Problème avec virtual


Sujet :

C++

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2005
    Messages : 690
    Points : 1 647
    Points
    1 647
    Par défaut Problème avec virtual
    Bonjour,
    J'ai un petit problème avec une classe virtuelle...

    Voici le .h de la classe virtuelle :

    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 COLLISIONNABLE_H
    #define COLLISIONNABLE_H
     
    #include <SFML/Graphics.hpp>
    #include "QuadTreeNode.h"
     
    class Collisionnable
    {
     
    public:
        // Retourne les coordonnées du point haut gauche et bas droite de l'objet collisionnable
        virtual sf::FloatRect getBounds () const = 0;
     
        /*void setQuadTreeNode (QuadTreeNode *node);
        QuadTreeNode* getQuadTreeNode ();
        QuadTreeNode *m_Node; // Zone du quadtree où se trouve l'objet*/
     
    };
     
    #endif // COLLISIONNABLE_H
    Une autre classe qui l'utilise :

    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
    #ifndef QUADTREENODE_H
    #define QUADTREENODE_H
     
    #include <SFML/Graphics.hpp>
    #include "Collisionnable.h"
    #include <vector>
     
    class QuadTreeNode
    {
    public:
        QuadTreeNode(QuadTreeNode *parent, sf::FloatRect const& bounds);
     
        void addObject (Collisionnable *c);
        sf::FloatRect getBounds() const;
     
    private:
        QuadTreeNode *m_ParentNode;
        sf::FloatRect m_Bounds;
        QuadTreeNode *m_ChildNodes[4];
     
        std::vector<Collisionnable*> m_Objets;
     
    };
     
    #endif // QUADTREENODE_H
    Ça ne compile pas, il me fait une erreur dans la classe QuadTreeNode, il me dis que Collisionnable n'est pas déclaré...
    Si je commente la ligne #include "QuadTreeNode.h" dans le .h de la classe Collisionnable, ça compile, mais du coup je ne peux pas stocker d'objets QuadTreeNode dans ma classe Collisionnable.

    Est-ce que vous pouvez m'éclairer svp ?

    Merci d'avance

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2005
    Messages : 690
    Points : 1 647
    Points
    1 647
    Par défaut
    En gros je crois que mon problème c'est ca :

    La classe virtuelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //#include "classea.h"
     
    class ClasseB
    {
    public:
        ClasseB();
        virtual int fonction () = 0;
    };
    La classe B :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include "classeb.h"
     
    class ClasseA : ClasseB
    {
    public:
        ClasseA();
     
        // ClasseB interface
    public:
        int fonction();
    };
    Si je décommente l'include qui se trouve dans ClasseB.h ça ne compile plus (et le message est vraiment pas clair)...

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2005
    Messages : 690
    Points : 1 647
    Points
    1 647
    Par défaut
    Bon j'ai trouvé...Il suffisait que je rajoute au début de mon fichier QuadTreeNode.h :


  4. #4
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Bonjour

    Il y a une entrée dans la FAQ pour ça : Comment créer deux classes qui font référence l'une à l'autre ?.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2005
    Messages : 690
    Points : 1 647
    Points
    1 647
    Par défaut
    yep merci

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

Discussions similaires

  1. Problème avec virtual PC
    Par freshman dans le forum Windows XP
    Réponses: 5
    Dernier message: 13/11/2008, 21h30
  2. problème avec le mot clé "virtual"
    Par Leole dans le forum C++
    Réponses: 6
    Dernier message: 02/11/2007, 11h51
  3. problème avec Virtual Box
    Par belaggoun2000 dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 19/06/2007, 11h09
  4. Probléme de résolution avec virtual PC
    Par wikers dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 19/08/2005, 10h04
  5. Problème avec Virtual Treeview
    Par bisounoursbleu dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/12/2004, 15h37

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