PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [QT]Compiler findet globale Variable nicht



Zombie
07-06-2008, 19:54
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


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?

peschmae
07-06-2008, 21:28
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:


int globaldings;


misc.h


#IFNDEF MISC_H
#DEFINE MISC_H
extern int globaldings;
#ENDIF


sonstwas.cpp:


#include "misc.h"

void methode() {
globaldings++;
}


oder von mir aus


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ä

Zombie
07-06-2008, 22:04
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?

peschmae
12-06-2008, 13:03
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ä

Zombie
12-06-2008, 15:14
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 :/

peschmae
14-06-2008, 21:48
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ä