structure



  • hallo

    im header-file (main.hpp) zur main.cpp wird eine structure definiert!
    wie kann ich von einer anderen cpp-Datei (Unterprogramm nicht in main.cpp)
    auf diese Structure zugreifen?
    zur zeit habe ich in beiden cpp-files das header fiel mit include hinzugefügt!
    dies ruft eine mehrfach-deklaration hervor.
    ich habe auch versucht mit ifndef und define zu arbeiten, kenne aber die
    genaue funktionsweise nicht!

    lg
    patrick



  • #include <main.h> hast du drin?



  • ja



  • Hallo

    wegen den Include-Guards :

    // Unit.h
    #ifndef UnitH
    #define UnitH
    
    // Definitionen
    
    #endif
    // Ende der Datei
    

    das wird aber doch eigentlich automatisch vom BCB angelegt, wenn du Neu/Unit ausführst.

    Ich verstehe deinen Aufbau so : Du hast eine Main.cpp und eine Unit.cpp mit jeweiliger Header-Datei. Die Main.h soll die Unit.h includen. Die Unit.h sollte nicht die Main.h includen.
    Um jetzt die Struktur-Definition in beiden Dateien benutzen zu können, brauchst du bloß noch diese in Unit.h zu verlegen. So ist es logisch und nachvollziehbar.

    bis bald
    akari



  • Hab nun das 2. header-file in main.hpp includiert.
    Und die struct definition zwischen ein #ifndef in die 2. Hpp-Datei gefügt.

    Das gibt aber nun eine hübsche mehrfachdeklaration.

    Wie hast du das mit dem verlegen gemeint?



  • Hallo

    mit verlegen meine ich aus Main ausschneiden und in Unit kopieren

    also noch mal ganz genau :

    // Unit Header
    #ifndef UnitH
    #define UnitH
    
    struct MyFaecher            
    {      
        char *Fach;      
    };
    extern MyFaecher Faecher[5];
    
    //... alle weiteren Definitionen
    #endif
    // Ende der Datei
    
    // Unit CPP-Datei
    #include "Unit.h"
    MyFaecher Faecher[5];
    
    // Main Header
    #ifndef MainH
    #define MainH
    #include "Unit.h"
    //... alle weiteren Definitionen, aber weder MyFaecher noch Faecher!
    #endif
    // Ende der Datei
    
    //Main CPP-Datei
    ...
    Faecher[1].Fach = "Hallo"; // Zugriff auf externes Array
    

    so soll es aussehen. Dann funktioniert es auch!

    bis bald
    akari



  • // Unit CPP-Datei
    MyFaecher Faecher[5];
    

    Das gibt einen daclaration syntax error

    Gruß



  • Hallo

    okay, in Unit.cpp muß natürlich oben noch #include "Unit.h" hinein. Hab ich korrigiert.

    bis bald
    akari



  • Herzlichen Dank auch lieber Kollege, das hat jezt funktioniert!!

    Somit ist die morgige Programmabgabe gesichert!!

    Noch kurz eine Frage zum Verständnis:
    Alle anderen Variablen (int, long) die ich in main.hpp definiert habe, hole ich mir mit extern int in die Unit.cpp.
    Warum ist es mit der Struktur nicht gegangen?

    🙂 Gruß und Dank MasterDitz


Anmelden zum Antworten