Anzeige:
Ergebnis 1 bis 6 von 6

Thema: [QT]Compiler findet globale Variable nicht

  1. #1
    Registrierter Benutzer
    Registriert seit
    30.05.2004
    Ort
    Kiel
    Beiträge
    11

    [QT]Compiler findet globale Variable nicht

    Moin!
    Ich verzweifle langsam und ich hoffe, ihr könnt mir die Augen öffnen.
    Ich habe eine Klasse Result und eine globale Instanz values davon initialisiert.
    Diese und weitere globale Variablen hab ich in einer extra Datei namens misc.cpp erstellt.
    Die Datei hab ich auch brav in der Projekt datei mit angegeben, bzw. Kdevelop.
    Wenn ich nun auf diese Variable zugreifen will, dann schmeisst er mir immer als Fehlermeldung
    Code:
    error: 'values' was not declared in this scope
    raus.
    Ich weiß nicht wie ich das weiter beschreiben soll. Bei einigen Datein klappts, bei einigen wieder nicht. Hab deswegen schon ne cpp mit über 1300 Zeilen weil ich das Problem einfach nicht seh das er das nicht findet.
    Wie kann ich die Variablen denn noch "globaler" machen als sie schon sind?

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Du musst sie halt noch deklarieren, in der aktuellen CPP-Datei die du gerade kompilierst und in der du die verwendest.

    Also so:
    misc.cpp:
    Code:
    int globaldings;
    misc.h
    Code:
    #IFNDEF MISC_H
    #DEFINE MISC_H
    extern int globaldings;
    #ENDIF
    sonstwas.cpp:
    Code:
    #include "misc.h"
    
    void methode() {
     globaldings++;
    }
    oder von mir aus
    Code:
    extern int globaldings;
    
    void methode() {
     globaldings++;
    }
    Der Compiler kann ja sonst nicht ahnen, wenn er am sonstwas.cpp kompilieren ist, dass es sonstwo ein globaldings gibt das ein int ist und überhaupt. Der guckt nämlich immer ausschliesslich die aktuelle cpp-Datei an und nichts anderes.

    Im übrigen sind globale Variablen böse und schlechtes Design ;-)

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    30.05.2004
    Ort
    Kiel
    Beiträge
    11
    Ich danke dir!
    Was hab ich mich damit abgequält

    Hm, ich bin jetzt nicht so der Profi, habs nie gelernt und progammier sonst nur kleinkram für mich, von daher waren globale Variablen immer OK.
    Die Alternative wäre die Übergabe von Zeigern und Referenzen oder?

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Ja, die Alternative wäre die Übergabe von Zeigern.

    Oder je nach dem ein komplett anderes Design fürs ganze Programm ;-)

    Aber das ist natürlich nicht einfach oder so...

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #5
    Registrierter Benutzer
    Registriert seit
    30.05.2004
    Ort
    Kiel
    Beiträge
    11
    Hm ne, also das "Design" bleibt erstmal schmutzig
    Soll erstmal nur funktionieren und die innere Struktur interessiert meinen Prof. im Moment nicht so wirklich.
    Aber irgendwann muss es sauber werden und darauf freu ich mich schon :/

  6. #6
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Zitat Zitat von Zombie Beitrag anzeigen
    Hm ne, also das "Design" bleibt erstmal schmutzig
    Soll erstmal nur funktionieren und die innere Struktur interessiert meinen Prof. im Moment nicht so wirklich.
    Hehe, das kenn ich auch. Hab auch schon globale Variablen benutzt - würde ich sonst nie machen

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •