tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
193
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    burgermac burgermac ist offline Grünschnabel
    Registriert seit
    Jul 2011
    Beiträge
    2
    Hallo Community,

    ich hab folgendes Problem in c++:
    ich habe mehrere .cpp dateien und 3 davon müssen auf eine Header Datei zugreifen, in der sich ein struct mit 2 float Variablen befindet

    #ifndef datenh_h
    #define datenh_h

    using namespace std;

    struct daten{
    float var1;
    float var2;} dat}


    #endif

    So, wenn ich diese Header jetzt in die .cpp Dateien mit #include "datenh.h" einbinde bekomm ich für jede cpp Datei die auf die Header zugreift die Fehlermeldung:
    error LNK2005: "struct daten dat" (?dat@@3Udaten@@A) ist bereits in 2projekt.obj definiert.
    ...2projekt.cpp ist eine von den cpp datein die diese Variablen brauchen.

    und die Fehlermeldung

    "Mindestens ein mehrfach definiertes Symbol gefunden."

    Wie schaffe ich, dass die Fehlermeldung vermieden wird, bzw was bedeutet sie?

    Wenn ich anstelle der struct normale Variablen nehme, sie nur in die haupt cpp datei einbinde und alle weiteren cpp-Dateien auf diese Variablen via extern float var1... zugreifen , geht es, leider klappt der "extern" befehl für meine struct variablen irgendwie nicht.
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hi und Willkommen bei tutorials.de

    Zuerst einmal: Bitte verwende in Zukunft die Codetags für Codeteile.
    Für C und C++: [cpp]...[/cpp]

    Und das "}" hinter dem dat ist hoffentlich in Wirklichkeit ein ";", oder?

    Zum eigentlichen Problem: Du mischt hier zwei Sachen.
    Einerseits legst du fest, wie die Struktur daten auszusehen hat (mit den zwei floats drinnen).
    Das ist OK.

    Andererseits legst du in der Headerdatei auch gleich eine Variable dat an.
    Und das gehört aus der Headerdatei raus.
    Weil du diese eine Variable ja in mehreren cpp-Dateien verwenden willst, musst du
    1) dat in der Headerdatei mit extern anlegen.
    Also das
    Code cpp:
    1
    2
    3
    4
    5
    
    struct daten
    {
        float var1;
        float var2;
    } dat;
    könnte man zuerst auch so schreiben:
    Code cpp:
    1
    2
    3
    4
    5
    6
    
    struct daten
    {
        float var1;
        float var2;
    };
    daten dat;
    Und da kommt jetzt ein extern wie folgt dazu:
    Code cpp:
    1
    2
    3
    4
    5
    6
    
    struct daten
    {
        float var1;
        float var2;
    };
    extern daten dat;

    2) legst du in einer (nur einer) cpp-Datei die Variable wirklich an, also einfach mit "daten dat", ohne extern.

    Gruß
     

  3. #3
    burgermac burgermac ist offline Grünschnabel
    Registriert seit
    Jul 2011
    Beiträge
    2
    Danke, scheint zu funktionieren, habs "daten dat;" jetzt nur einmal vor der int main() global angelegt. Danke für die schnelle Hilfe******
     

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 10.12.08, 12:50
  2. C - struct pointer in struct
    Von nero-15 im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 12.11.08, 18:31
  3. C struct to C# struct & vice versa
    Von visus im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 01.08.07, 08:32
  4. css extern
    Von WiZdooM im Forum CSS
    Antworten: 2
    Letzter Beitrag: 15.07.05, 16:19
  5. struct of c:\
    Von excSchaKaL im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 27.10.04, 15:02

Stichworte