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 :

comment bien faire organiser ses header


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 167
    Par défaut comment bien faire organiser ses header
    Bonjour,

    Le sujet est peut-être déjà paru mais impossible de faire tourner le moteur de recherche du forum (qui a éteint la lumière?!)

    quand je fais des classes en c++, généralement, je mets tout dans un header si c'est vraiment minimal et sinon, je partage déclaration et définition dans un fichier .h et un fichier .cpp. Et l'include du .h dans les fichiers qui utilisent la classe appellée
    Jusque là, pas de pb...

    J'utilise maintenant Qt... et parfois certaines organisation ne sont pas acceptées!

    ex1 : j'ai pas le droit de définir après la déclaration totale de la class dans le fichier header
    ex2 : je dois faire un include du .cpp que j'utilise dans les .cpp qui l'exploite

    ... et avec des fichiers en cascade, je peux pas compiler.
    Existe-t-il une organisation type qui marche à tous les coups?! (un standard quoi!)

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par défaut
    Ça m'a plutôt l'air d'être un problème lié à Qt, pour ça il y aura bien un initié sur le forum pour répondre.
    Sinon comme bonnes pratiques pour les cas généraux je pourrais rajouter:
    - toujours définir un namespace pour ton projet et mettre toutes tes définitions dedans, même pour de tous petits projets ils peuvent finir par s'exploiter l'un l'autre et on en comprend vite l'utilité
    - pour les fonctions/classes à usage interne (définis uniquement dans un fichier .cpp parce que on en a pas l'utilité ailleurs), toujours les englober dans un namespace non nommé pour éviter des problèmes de link (rarissimes mais pas inexistants)
    - les extensions .h en C++, ça craint. Plusieurs bibliothèques ont choisi d'adhérer à la norme utilisée par boost: les .hpp. Ça permet de bien séparer les fichiers C des fichiers C++ (ça n'a rien à voir!!)

  3. #3
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Salut, une question:

    Quand tu dois inclure les cpp, c'est les cpp de Qt, ou alors les cpp de ton projet?

  4. #4
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Avec Qt, tu peux quand même définir entièrement certaines classes dans les headers, mais il faut inclure le fichier moc de la classe ou un trcu du genre dans tes sources.
    Je m'en vais rechercher ca.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 167
    Par défaut
    merci d'avance pour la recherche sur le moc ou truc comme ça

    Pour répondre à la question, c'est les cpp de mon projet... en fait, j'observe plein de différence entre des configurations à compilations qui marchent et des configurations à compilations qui marchent pas... que je sois en projet C/C++ exclusivement ou projet Qt par exemple.

    ok pour les namespace. Je faisais ça avant mais c'est parfois un peu lourd quand on utilise plusieurs namespace dans un même fichier.
    .h et .hpp ... j'utilisais ça aussi avant... et je sais plus pourquoi j'étais revenu au .h Je vais tester ça même si Qt semble ne pas en avoir (de .hpp)

    Encore un truc : j'utilise la règle suivante pour choisir si je mets les include dans le .h ou le .cpp, est-elle correct?
    Je fais l'include dans le .h que si un appel y est fait. Je fais l'include dans le .cpp que si c'est pas dans le .h (normal) et que au moins un appel est fait (normal aussi)
    Par contre pour les include de .cpp ... j'ai pas encore trouvé de truc logique et efficace. Avant, j'en mettais jamais mais là, il se trouve que j'en ai eu besoin pour que le compilo me dise oui. Avez-vous une petite règle à ce sujet (même maison)?!
    EDIT : il semblerait que mettre include des .cpp qui sont appelles dans le cpp qui s'en sert... soit une solution.

  6. #6
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Salut,

    franchement ton problème est bizarre, je ne connais pas Qt mais quand même...
    Je pense aussi que comme zais_ethael le dit, ça a à voir avec Qt, donc peut-être que si tu vas sur le forum de Qt on pourra t'aider

Discussions similaires

  1. Comment "bien" faire ses CSS
    Par sliderman dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 30/06/2008, 20h38
  2. [Debutant] comment bien faire une variable ?
    Par nighthammer dans le forum iReport
    Réponses: 2
    Dernier message: 27/05/2008, 11h56
  3. Class de mesh, comment bien faire ?
    Par Tosh dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 24/04/2007, 12h24
  4. [MS/SQL 2K][Securité][Restauration]Comment bien faire ?
    Par jbat dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/04/2007, 11h18

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