Header werden ignoriert -> Kompilierfehler



  • Nabend,

    ich bin grad an einem Spiel mit Irrlicht, allerdings hänge ich jetzt schon ne ganze Zeit daran, dass VS irgendwie ein Problem damit hat, eigens definierte Strukturen, Klassen, enums, etc. aus diesen Headern nicht erkennt und in einer anderen Datei, wo diese Strukturen etc schon bekannt sein müssten rummeckert, weil es eben nicht bekannt ist.

    Folgendes Problem:

    [header1.h]

    struct s1
    {
    int dieses;
    int jenes;
    };
    

    [header2.h]

    class header2
    {
    private:
    s1 test;
    }
    

    s1 sollte ja in header2.h schon bekannt sein, da:

    [mainFile.h]

    //...
    #include "header1.h"
    #include "header2.h"
    //...
    

    Was es aber leider nicht ist. VS wirft mir sämtliche Fehler an den Kopf die es im Repertoire hat.
    Schonmal danke für die Hilfe, habe leider generell ein Problem wie ich mit den Headern umgehe, damit alles überall bekannt ist und doch nix doppelt 😃

    Gruß
    gabs



  • 1.) Include in jedem Header die Dateien, die er benötigt.
    2.) Verwende Include Guards:

    #ifndef DEINHEADERNAME_HPP
    #define DEINHEADERNAME_HPP
    
    // Code
    
    #endif
    


  • Ok, funktioniert, Danke 😃

    Allerdings würde mich interessieren, wieso es nicht so geht, wie ichs bisher gemacht habe, weil #include ja nichts anderes macht, als den code, der im header steht an die stelle zu kopieren, wo include steht.
    Ich habe bis jetzt 3 Header, der zweite bedient sich beim ersten und da gehts ohne probleme, nur der dritte zickt rum.



  • um die unabhängigkeit zwischen den einzelnen modulen zu gewährleisten inkludiert man in jede datei die benötigten header, ausser bei gegenseitigen abhängigkeiten

    sprich du musst deine header1.h auch in deinen header2.h inkludieren und diese (oder sogar beide) und deine main.cpp


Log in to reply