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 :

probleme d'inclusions multiple


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 42
    Par défaut probleme d'inclusions multiple
    bonjour,

    je bosse sur un projet genre jeu de la vie,
    j'ai définie mes classes avec les méthodes inlines dans les .h suivant:

    animal.h
    faune.h
    herbe.h
    monde.h
    smart_ptr.h
    parametres.h

    la dépendance entre ces .h est la suivante :

    - monde.h inclut herbe.h
    - herbe.h inclut faune.h
    -faune.h inclut smart_ptr.h
    - animal.h inclut monde.h

    bref c'est un peut le bazare mais les #define et #ifndef ( et #endif) y sont.

    à la compilation il reconnait ni le type animal ni faune (alors que les inclusions sont présentes), je voudrais savoir s'il y a une méthode pour faire les inclusion proprement pour ne pas que le compilateur s'emmele.

    merci d'avance

    porco

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Mes tes fonctions dans les fichiers .ccp (qu'elles soient inline ou non) et fais au maximum des déclarations anticipées dans tes fichiers .h. Laisse l'inclusion des en-têtes dans les fichiers .cpp quand tu le peux.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 42
    Par défaut
    re bonjour ,
    merci pour la réponse mais malgré avoir tout séparé .h et .cpp
    g toujours les même erreur de non reconnaissance de type ( non prédéfini )
    du style :

    `Faune' was not declared in this scope

    alors pour vous péciser un peu,j'ai implémenté un smart_ptr qui marche très bien quand je le test dans un main à part ( même sur des classe que j'ai implémenté ) mais ce genre d'erreur ( comme celle citée précedement ) se localise lors de décalatation comme ça :

    smart_ptr<Faune> f;

    ou bien

    typedef smart_ptr<Animal> ptr_A;
    typedef vector<ptr_A> Vecanim;

    Si je les test avec juste un main un .h et un .cpp elles passent.

    je capte pas trop ou peut se situer l'erreur , un problème de portée, j'en c trop rien, si vous pouviez éclairer ma lanterne ?

    merci beaucoup , @ chao !

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Est-ce que ça pourrait être lié à http://c.developpez.com/faq/cpp/?pag...VERS_templates (j'y crois pas trop, mais bon...) ?

    Sinon, met un bout de code complet (le plus petit possible) et les messages d'erreurs complets. C'est dur d'aider en devinant.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut
    la dépendance entre ces .h est la suivante :

    - monde.h inclut herbe.h
    - herbe.h inclut faune.h
    -faune.h inclut smart_ptr.h
    - animal.h inclut monde.h
    Il faut aussi inclure les .h dans les .cpp:
    monde.cpp inclut herbe.h
    etc..

    Et dans les .h, tu mets la ligne (pour monde.h)
    Comme ca, le compilo sait que la classe herbe existe, mais n'a pas besoin de savoir ce qu'il y a dedans dans le .h. Par contre pour l'implémentation (.cpp) il aura accès aux .h que tu inclus.

    Je sais pas si c'est très clair...mais ca devrait marcher.

Discussions similaires

  1. Probleme d'inclusion multiple de .h
    Par bmw13fr dans le forum Visual C++
    Réponses: 2
    Dernier message: 12/09/2007, 17h46
  2. probleme d'inclusion multiple
    Par chrono23 dans le forum C++
    Réponses: 3
    Dernier message: 02/11/2006, 10h30
  3. inclusions multiples c++
    Par persam dans le forum C++
    Réponses: 2
    Dernier message: 30/11/2005, 14h09
  4. Problème d'inclusions multiples
    Par Le Furet dans le forum C
    Réponses: 2
    Dernier message: 03/10/2005, 23h59
  5. probleme d'inclusion
    Par porcher dans le forum C++
    Réponses: 5
    Dernier message: 03/03/2005, 20h44

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