Problem mit #include



  • Meine Frage ist für viele hier sicher schnell zu beantworten. Ich habe aber jedoch einfach noch keine Lösung gefunden!

    Ich definiere eine Klasse "Raum" in Raum.h
    Ich definiere eine Klasse "Haus" in Haus.h
    Ich definiere eine Klasse "Wohngegend" in Wohngegend.h

    In Raum.cpp steht:

    #include "Raum.h"
    

    In Haus.cpp steht:

    #include "Haus.h"
    

    In Wohngegend.cpp steht:

    #include "Wohngegend.h"
    

    zusätzlich steht in Haus.h:

    #include "Raum.h"
    

    (für vector<Raum>)

    und in Wohngegend.h steht:

    #include "Haus.h"
    

    (für vector<Haus>)

    Soweit wird auch fehlerfrei compiliert. Obwohl ich dachte, dass es da schon Probleme geben könnte, weil man ja nur einmal eine Datei includieren kann.

    Wenn ich nun eine Anwendungsklasse schreibe, wo ich sowohl Zugriff auf z.B. Haus oder Wohngegend benötige geht das mit:
    #include "Haus.h" ODER #include "Wohngegend.h" einwandfrei, aber ich kann nicht BEIDE includieren, dann kommt die Meldung:

    error C2011: 'Raum' : 'class' Typneudefinition.

    Includiere ich nicht, so kennt er natürlich den Bezeichner "Wohngegend" bzw. "Haus" nicht.

    Auch die Abfrage mit #ifndef hilft nicht. Dann kommt zwar keine Fehlermeldung mehr, aber er kennt dann wieder den Bezeichner nicht!

    Ich hoffe ich habe alles richtig zusammengefasst und mein Problem schildern können! Vielleicht kann mir ja jemand helfen.

    PS: Bei mir ist in jeder Datei nur eine Klasse vorhanden, die auch so heisst wie der Dateiname.



  • Zwei Stichworte:

    1. Include-Guards
    2. Forward declaration

    greetz, Swordfish



  • Forward declaration, nach dem Begriff hatte ich gesucht, wusste nicht mehr wie das heisst. Werd mal schauen, was ich da in Erfahrung bringen kann. 🙂



  • Beide Begriffe sind wichtig!


Anmelden zum Antworten