Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problèmes d'inclusion de headers

Sujet résolu
    1 janvier 2008 à 23:07:13

    Salut,
    J'avoue que j'ai rencontré ce problème il y'a une semaine de cela, mais j'ai cru que je l'ai résolu, mais il persiste, voilà le problème:
    j'ai 3 fichier .h:
    Engine.h
    Object.h
    Buffer.h
    Tennez vous, ça va ce compliquer un peu ^^:
    voila les inclusions des fichiers :

    Buffer.h:
    1. #ifndef DEF_BUFFER
    2. #define DEF_BUFFER
    3. #include<iostream>
    4. #include"Engine.h"


    Engine.h:
    1. #ifndef DEF_ENGINE
    2. #define DEF_ENGINE
    3. #include<iostream>
    4. #include<string>
    5. #include<stdio.h>
    6. #include<stdlib.h>
    7. #include<SDL\SDL.h>
    8. #include<SDL\SDL_image.h>
    9. #include<SDL\SDL_ttf.h>
    10. #include"Object.h"
    11. #include"Buffer.h"


    Object.h:
    1. #ifndef DEF_OBJECT
    2. #define DEF_OBJECT
    3. #include<iostream>
    4. #include<string>
    5. #include<SDL\SDL.h>
    6. #include<SDL\SDL_image.h>
    7. #include<SDL\SDL_ttf.h>
    8. #include"Engine.h"
    9. #include"Buffer.h"


    Et voila ce que me dit le compilo:

    Citation : Compilo

    Buffer.h 13 Error: 'Object' has not been declared
    Buffer.h 13 Error: ISO C++ Forbids dclaration of 'object' with no type
    Buffer.h 20 Error: ISO C++ Forbids dclaration of 'Object' with no type
    Buffer.h 20 Error: expected ';' before '*' token



    Dans les lignes 13 et 20, il y'a la déclaration de l'objet object de type Objet.
    Merci de m'aider à surmonter ce CAUCHEMAR.
    • Partager sur Facebook
    • Partager sur Twitter

    La maîtrise des fondamentaux est le fondamental de la Maîtrise.

      1 janvier 2008 à 23:13:02

      buffer.h inclue engine.h qui inclue lui même buffer.h .

      Ya pas comme un problème ? ta essayé de revoir ta conception ? il faut essayé d'avoir un header par .cpp
      • Partager sur Facebook
      • Partager sur Twitter
        1 janvier 2008 à 23:52:12

        Citation : noob4ever

        buffer.h inclue engine.h qui inclue lui même buffer.h .



        c'est pour cela que le bloc
        1. #ifndef DEF_truc
        2. #define DEF_truc
        3. #endif

        c'est pour les inclusions multiples marchent non ?
        Si je me trompe éclairez moi s'il vous plait :)
        Merci.
        • Partager sur Facebook
        • Partager sur Twitter

        La maîtrise des fondamentaux est le fondamental de la Maîtrise.

          2 janvier 2008 à 0:12:43

          En fait il suffit de n'inclure que les headers des autres classes uniquement dans les fichiers source.
          Ainsi tes 6 fichiers (headers & sources) devront comprendre ceci :

          Buffer.h :
          1. // Aucun include.
          2. // Juste un déclaration des autres classes utilisée.
          3. class Engine;


          Buffer.cpp :
          1. // Là on met l'include qui lui ne réinclurat pas le fichier source(on ne boucle pas).
          2. #include "Buffer.h"
          3. #include "Engine.h"


          Engine.h :
          1. // Idem.
          2. class Object;
          3. class Buffer;


          Engine.cpp :
          1. // Idem.
          2. #include "Engine.h"
          3. #include "Object.h"
          4. #include "Buffer.h"


          Object.h :
          1. class Buffer;
          2. class Engine;


          Object.cpp :
          1. #include "Object.h"
          2. #include "Buffer.h"
          3. #include "Engine.h"


          EDIT : @ Chlab_lak -> Apparement non. Mais moi non plus, je pensai qu'il n'offrait pas de réponse vu qu'il n'a pas trouvé. Désolé d'avoir posté ta réponse...
          • Partager sur Facebook
          • Partager sur Twitter
            2 janvier 2008 à 0:17:15

            Citation : Chlab_lak

            t'as lu mon lien ?


            Oui, je l'ai lu, il parle des classes, mais la partie inclusion est trop brève, mon problème n'y est pas exposé.

            EDIT:
            C'est bon le problème est réglé, merci à vous tous, et surtout à Chlab_lak pour le lien qui est très util est que je recommende à tout le monde.
            Merci beaucoup.
            • Partager sur Facebook
            • Partager sur Twitter

            La maîtrise des fondamentaux est le fondamental de la Maîtrise.

            Problèmes d'inclusion de headers

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown