include-Problematik



  • Hallo alle miteinander,

    ich habe derzeit ein wahrlich frustrierendes Problem:
    Ich schreibe an einem etwas größerem Programm.
    Es besteht aus drei Hauptklassen:
    - EvoCore
    - EvoNetwork
    - EvoXMLData
    Aus der Core-Klasse heraus werden Objekte der anderen beiden Klassen erstellt und benutzt.
    Zu jeder dieser Klassen gehören je 2 Header-Files: Eines mit structs und eines mit Konstanten (enums und const QString's).
    Diese werden in den Header-Files der Klassen included.
    Die beiden Unter-Klassen müssen allerdings auf structs und Konstanten aus den Headern der Core-Klasse zugreifen.
    Bei diesen Zugriffen liefert mir der Compiler allerdings Fehler des folgenden Musters:

    evoxmldata.cpp:179: error: `clientXML' was not declared in this scope
    
    evoxmldata.cpp: At global scope:
    evoxmldata.cpp:41: error: `settings' does not name a type
    evoxmldata.cpp:126: error: `settings' has not been declared
    

    Hier mal in Übersichtsform die includes in den einzelnen Datein:
    main.cpp:

    # include "evocore.h"
    # include "evonetwork.h"
    # include "evoxmldata.h"
    

    evocore.h:

    # include "coreconstants.h"
    # include "corestructs.h"
    
    # include "evonetwork.h"
    # include "evoxmldata.h"
    

    corestructs.h:

    struct settings
    {
    ...
    };
    

    evonetwork.h:

    # include "networkconstants.h"
    # include "networkstructs.h"
    

    evoxmldata.h:

    # include "xmlconstants.h"
    
    ...
    
    settings readSettings(QString fileName);  //Bei Benutzung der structs aus anderen Klassen heraus treten die oben genannten Compiler-Fehler auf.
    

    Ich weis, das das viel zum Lesen und durchgucken ist, aber ich hoffe, dass mir trotzdem jemand weiterhelfen kann.

    Danke im Voraus für jede Hilfe und Ciao,

    Prof. MAAD



  • Hast du mal versucht, die "corestructs.h" mit in die evoxmldata.h einzubinden?
    (wenn es Probleme mit Mehrfachdeklarationen gibt - nutze Include-Guards)



  • Vielen Dank.

    Ich weis nicht, warum ich darauf nicht selbst gekommen bin.
    Ich habe es jetzt so geändert und bis jetzt scheint es zu funktionieren.

    Vielen Dank nochmal und Ciao,

    Prof. MAAD



  • Hilfreich in diesen Faellen ist auch die "forward" Deklaration von Klassen und Structs


Anmelden zum Antworten