cout in includeter Datei funktioniert nicht?
-
Hallo zusammen!
Mittlerweile geht es schon recht gut mit C++, doch jetzt bin ich auf ein komisches Problem gestossen, das ich mir nicht erklären kann:
Ich habe den ganzen Code meines Programms in einer Datei. Nun wollte ich eine neue Funktion, die sehr gross war, in eine andere Datei programmieren.
In der Hauptdatei habe ich diese dann mit #include "datei.h" inkluded. Nun gibt er mir aber den Fehler raus, dass er das "cout" nicht mehr kennt. Ich habe in der neuen Datei auch schon <iostream> inkluded, aber das brachte nichts.
Könntet ihr mir vielleicht weiterhelfen? Danke bereits im Voraus!
Gruss CorDharel
-
leider sehr wenig informationen. aber moeglich waere dass unter #include <iostream> noch ein using namespace std; fehlt (dann muesste aber cout schon vorher nicht erkannt worden sein) oder die include reihenfolge muss geaendert werden:
moeglicherweise sieht es bei dir bis jetzt so aus:main.cpp
#include "header.h" #include <iostream> using namespace std; int main() { ... f(); ... return 0; };header.h
int f() { ... cout<<...; ... };falls es bei dir jetzt so aussehen sollte includier die header.h einfach mal als letztes:
main.cpp
#include <iostream> using namespace std; #include "header.h" ...es wuerden eventuell noch andere fehlerquellen in betracht kommen aber wie gesagt leider zu wenig informationen.
-
Tut mir leid, es ist auch nichts besonderes

Aber genau das war es! Ich hatte das Include oberhalb des Namespaces.
Danke vielmals!Warum muss ich es unterhalb machen?
Gehört cout zum Namespace von iostream? (hmm ich frag mich jetzt ob das ne bescheuerte Frage ist oder nicht)[Edit] Hmm jetzt gibt es ein anderes Problem:
Ich habe in der Funktion in der neuen Headerdatei einen Parameter namens Kiosk (von der Klasse CKiosk), aber nun meint er immer
'CKiosk' : undeclared identifier
und nochmals deklarieren kann ich es nicht, sonst motzt der Linker.

Was soll ich tun?
PS: die Funktion == int checkEreignisse(CKiosk *Kiosk);
-
definier deine klasse vor deiner funktion. denn darin liegt das problem-woher soll die funktion denn wissen dass es eine klasse namens CKiosk gibt wenn diese erst nach ihr definiert wird. am besten du packst einen klassenprototypen mit in die header (aber vor der funktion) und die memberdefinitionen in eine seperate .cpp datei. oder (am einfachsten) du inludierst deine header erst nach der klassendefinition mitten im quellcode-ist aber von abzuraten - fuehrt nicht gerade zu sehr uebersichtlichen code-kann auch leicht zu fehlern fuehren.
-
Okay. Aber ich dachte das hätte ich gemacht.
So siehts aus:
//Kiosk #include <iostream> #include <stdlib.h> using namespace std; #include "CKiosk.h" //<< das ist die klasse CKiosk #include "Raenge.cpp" //<< da ist die funktion drinund das ist der aufruf:
checkEreignisse(Kiosk);und so sieht "Raenge.cpp" aus:
#include <iostream> #include <stdlib.h> using namespace std; int checkEreignisse(CKiosk *Kiosk) { cout << "blabla"; return 0; }Hmm jetzt hab ich mich selber verwirrt. Cpp Dateien muss man auch inkluden oder nicht?

-
also du brauchst grundsaetzlich alle header nur 1 mal einzubinden. die eingebundenen datein werden ohnehin vom praeprozessor quasie einfach dort eingesetzt wo du mal #include stehen hattest. es ist auch egal welche endung deine includierten datein haben. ich wuerde sie aber auf .h enden lassen ;).
naja egal. hier mal eine variante://main.cpp #include <iostream> #include <cstdlib> using namespace std; #include "CKiosk.h" #include "Raenge.h" int main() ...//CKiosk.h class CKiosk { ... }; ...//Raenge.h int checkEreignisse(CKiosk *kiosk) { ... cout<<... ... return irgentwas; };