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 :

Imbrication de namespace


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Froyok
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 83
    Par défaut Imbrication de namespace
    Bonjour, mon problème se résume en un gros schéma :


    Légende :
    Rose = classe.
    Bleu = namespace.


    Dans ma classe Engine, je tente de déclarer en pointeur mon objet, sauf que je me retrouve avec cette erreur :
    /!\ "Dooce::Scene has not been declared"

    Je me demande donc si l'imbrication des namespace est possible ?
    Il me paraitrait logique que oui, mais je ne parviens pas à trouver d'informations sur ce point (ni sur ce forum, ni même dans mon bouquin sur le c++).

    dooce.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
     
    #include "dooce_scene.h"
     
    namespace Dooce
    {
        namespace Engine
        {
            class Engine
            {
                public:
                    Engine();
                    ~Engine();
     
                    void initialize(); //setting up the engine
                    void Run();
                private:
                    std::string nm_game; //Exil
                    std::string nm_engine; //Dooce 0e
     
                    Dooce::Scene::manageScene * scene; //Erreur ici !
                    Dooce::Window * window;
                    Ogre::Root * root;
            };
     
        }//end namepsace Dooce::Engine
    }//end namespace Dooce
    dooce_scene.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
     
    namespace Dooce
    {
        namespace Scene
        {
            class manageScene
            {
                public:
                    manageScene(Ogre::Root * root);
                    ~manageScene();
                    void setOptionsScene();
                    void loadLevel(std::string filename);
                    void setPlayerPlace(Ogre::Vector3 player_place, Ogre::Vector3 player_angle);
                private:
                    Ogre::SceneManager * scene;
            };
        }//end namespace Scene
    }//end namespace Dooce

    [EDIT] j'ai pas du poster au bon endroit, sorry !

  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
    Salut,
    Ton code tel que tu le montres compile sans problème car rien ne t'empêche d'utiliser des espaces de nom imbriqués. Ton problème doit être ailleurs : double inclusion des en-têtes ?
    D'une façon plus globale, je te conseillerais d'utiliser la déclaration anticipée quand tu le peux :
    dooce.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
    29
    30
    31
    32
    33
    34
    // declarations anticipées :
    namespace Ogre{
       class Root;
    }
    namespace Dooce{
       class Window;
       namespace Scene{
          class manageScene;
       }
    }
     
    namespace Dooce
    {
        namespace Engine
        {
            class Engine
            {
                public:
                    Engine();
                    ~Engine();
     
                    void initialize(); //setting up the engine
                    void Run();
                private:
                    std::string nm_game; //Exil
                    std::string nm_engine; //Dooce 0e
     
                    Dooce::Scene::manageScene * scene; //Erreur ici !
                    Dooce::Window * window;
                    Ogre::Root * root;
            };
     
        }//end namepsace Dooce::Engine
    }//end namespace Dooce
    Tu trouveras quelques éléments dans cette entrée de la F.A.Q.

  3. #3
    Membre confirmé Avatar de Froyok
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 83
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Salut,
    Ton code tel que tu le montres compile sans problème car rien ne t'empêche d'utiliser des espaces de nom imbriqués. Ton problème doit être ailleurs : double inclusion des en-têtes ?
    C'est à dire ? Un en-têtes réinclue plusieurs fois ?
    On préviens ce genre de choses avec ça il me semble :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #ifndef DOOCE_SCENE
    #define DOOCE_SCENE
     
    //code
     
    #endif
    Si c'est le cas, pas de soucis, après vérification (par deux fois), j'ai bel et bien utilisé ces préventions dans chacun de mes en-tête.


    Citation Envoyé par 3DArchi Voir le message
    D'une façon plus globale, je te conseillerais d'utiliser la déclaration anticipée quand tu le peux :
    dooce.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
    29
    30
    31
    32
    33
    34
    // declarations anticipées :
    namespace Ogre{
       class Root;
    }
    namespace Dooce{
       class Window;
       namespace Scene{
          class manageScene;
       }
    }
     
    namespace Dooce
    {
        namespace Engine
        {
            class Engine
            {
                public:
                    Engine();
                    ~Engine();
     
                    void initialize(); //setting up the engine
                    void Run();
                private:
                    std::string nm_game; //Exil
                    std::string nm_engine; //Dooce 0e
     
                    Dooce::Scene::manageScene * scene; //Erreur ici !
                    Dooce::Window * window;
                    Ogre::Root * root;
            };
     
        }//end namepsace Dooce::Engine
    }//end namespace Dooce
    Tu trouveras quelques éléments dans cette entrée de la F.A.Q.
    Je te remercie !
    Avec ces déclarations anticipées cela compile sans problèmes !

  4. #4
    Membre confirmé Avatar de Froyok
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 83
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Ton problème doit être ailleurs : double inclusion des en-têtes ?
    Après, revérification, c'était bien ça, problème résolu !

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

Discussions similaires

  1. Imbrication de namespace
    Par BernardBouree dans le forum VB.NET
    Réponses: 3
    Dernier message: 03/10/2012, 13h17
  2. suppression d'imbrication
    Par dor_boucle dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/07/2004, 11h30
  3. [debutant] suppression d'imbrication
    Par dor_boucle dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/07/2004, 17h01
  4. [Debutant][Divers] - namespace et attributs
    Par sebbb dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 10/06/2003, 14h40
  5. Erreur récurrente (namespace)
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 3
    Dernier message: 25/02/2003, 10h27

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