tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
582
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Hallo!

    Ich habe ein problem...

    ... ich habe ein projekt mit zwei .cpp dateien die beide die selbe variable verwenden (CFirstPersonCamear g_Camera)

    nun hab ich die deklaration der variable in die header datei cam.h gesetzt und von den anderen 2 .cpp dateien entfernt

    bei den 2 .cpp datein noch #include "cam.h" eingefügt

    nun sagt der compiler:
    CFirstPersonCamera g_Camera Neudefinition in cam.h
    aber die variable ist doch nur einmal in der header, allerdings wird die header zweimal includiert!

    Ich weis nett was ich machen soll pls Help
    Danke im Voraus
     

  2. #2
    Avatar von Muepe32
    Muepe32 Muepe32 ist offline Mitglied Brokat
    Registriert seit
    Mar 2011
    Beiträge
    353
    Ja, behalte im Kopf, dass Header schlicht und einfach kopiert werden. Damit hast du die Variable in zwei C++-Dateien definiert, was mehr als 1 Mal ist. Zielführend ist hier das Keyword extern.
     
    Viele Tutorials und Artikel zur Programmierung unter Windows mit C++ und C#. Tägliche Updates und Antworten auf eure Fragen:
    Win32Easy - Blog
    Es würde mich freuen, wenn ihr einen Kommentar postet!

  3. #3
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Was Muepe32 sagen wollte:

    In Headerdateien gehören keine Definitionen.

    In Headerdateien gibt man ausschließlich (Vorwärts-) Deklarationen an.

    Variablen dürfen mehrfach deklariert werden.

    Variablen müssen irgendwo definiert werden.

    Also:
    Code cpp:
    1
    2
    
    // abc.h
    extern xyz_type xyz_variable;
    Code cpp:
    1
    2
    
    // abc.cpp
    xyz_type xyz_variable;
    Code cpp:
    1
    2
    3
    4
    
    // hfg.cpp
    #include "abc.h"
    ...
    cout << xyz_variable;
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  4. #4
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Danke erstma

    @deepthroat
    ok aber ich will die variable ja in 2 .cpp datein verwenden aber es soll nur eine variable sein!
    Bei dir sind es ja zwei variablen oder hab ich da was nich kapiert?
     

  5. #5
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hi

    deepthroats Lösung passt da schon.

    Wenn du die Variable in jeder cpp-Datei anlegen würdest, hast du mehrere verschiedene.
    Wenn du es nur in einer cpp-Datei machst, bekommst du in den anderen Compilerfehler wegen unbekanntem Variablennamen.

    Deshalb in einer cpp wirklich anlegen und in den anderen durch extern bekannt machen, dass es diese Variable gibt und sie in einer anderen cpp angelegt wurde.

    Wie von deepthorat gezeigt kann das extern natürlich auch in einen Header und von dort aus in mehrere cpp-Dateien eingebunden werden, ohne die Zeile jedesmal neu zu schreiben.

    Gruß
     

  6. #6
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    ok danke habs jetz hinbekommen
    *close*

    Ich muss wirklich sagen also hier wird einem hammer geil geholfen!
    Geändert von MSVCplusplus (23.06.11 um 00:01 Uhr) Grund: Einfach so
     

Ähnliche Themen

  1. class'-Typ-Neudefinition' Error
    Von Ouglin im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 03.05.05, 12:39
  2. Neudefinition von variablen
    Von mr_d2254 im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 26.02.02, 14:35

Stichworte