.Cpps und .hs



  • Hallo
    Ich möchte mein Projekt gerne ihn mehrere Teilunits aufspalten. Dabei soll es einmal "Vars" geben. Also eine Unit, die alle globalen Variablen enthält.
    Dann habe ich 2 Anwendungsunit (A1,A2) in der die globalen Variablen gebraucht werden.
    Zum Schluß habe ich noch eine Main Unit, in der sowohl A1, A2 als auch die globalen Variablen (Vars) gebraucht werden. Also müsste ich theoretisch alle 3 Unit einbinden.

    Folgendes Problem ergibt sich jetzt:
    Jede dieser Units besteht ja aus einer .cpp und einer .h Datei. Wenn ich jetzt bei Vars die Variable in .cpp erstelle, dann .h (da stehen konstanten drin) in die .cpp einbinde und die .h dann in die .h's von A1 und A2, dann bekomme ich die Meldung, dass die Variable aus vars.cpp nicht bekannt ist. binde ich jetzt in A1.h die vars.cpp ein funktioniert alles. Wenn ich die vars.cpp jetzt aber auch in A2.h einbinde, bekomme ich eine Meldung, dass ich eine Neudefinition gemacht hätte. ich habe testweise mal static davorgeschrieben, aber das hat leider auchnicht gebracht 😞

    Nun meine Frage: Wie muss ich die Units verbinden (also welche .h in welche cpp, welche cpp in welche h, welche h in welche h usw....) und wo muss ich die Variablen reinschreiben (.h oder .cpp???)

    Vielen Dank schonmal!

    ((Hier noch eine kleine Zeichnung, wie ich mir das vorstelle^^:
    [url]http://s1.directupload.net/file/d/1918/6o4kfohl_jpg.htm [/url]))



  • Mal abgesehen davon, dass globale Variablen sowieso meist fragwürdig sind und vermieden werden können: du deklarierst diese Globalen in einer cpp-Datei und willst sie dann in anderen cpp-Dateien nutzen? Das geht so nicht. Dafür gibt es auch keinen Grund. Wenn's schon sein muss, dann pack die Deklarationen deiner Globalen in einen Header.

    Aber vielleicht solltest du mal ein wenig Code zeigen. Da lässt sich bestimmt einiges am Design optimieren (bzw. komplett umstricken 😉 ).



  • Danke schonmal.
    Nur leider löst es mein problem nicht. Natürlich sollte man nicht zuviele globale Variablen verwenden, aber in diesem Fall würde ich trotzdem gerne globale Variablen verwenden.
    Das Problem ist: Wenn ich die Variable in einer Header erstelle und diese dann mehrfach in andere Datein einbinde, dann redefiniere ich sie ja ---->Fehler.

    Wenn ich sie in der cpp Datei erstelle und in der Header nur ein extern schreibe, dann bekomme ich einen LNK2019. Was nun???



  • Fragestellung schrieb:

    Nur leider löst es mein problem nicht. Natürlich sollte man nicht zuviele globale Variablen verwenden, aber in diesem Fall würde ich trotzdem gerne globale Variablen verwenden.

    Wie gesagt, zeig doch mal ein wenig Code, dann kann man dazu auch mehr sagen und vielleicht ein paar sinnvolle Tipps geben.

    Fragestellung schrieb:

    Das Problem ist: Wenn ich die Variable in einer Header erstelle und diese dann mehrfach in andere Datein einbinde, dann redefiniere ich sie ja ---->Fehler.

    Setze an den Anfang des Headers mal ein "#pragma once" (und informier dich zusätzlich mal, was include guards sind).

    EDIT: Außerdem kannst du Globale einer fremden Datei "holen", indem du "extern" benutzt.


Log in to reply