Anfänger-Problem. Mal gehts, mal geths nicht !
-
Hi,
also ich bin neu hier und hoffe ich bin hier richtig
Mein Problem ist folgendes:
Einfaches einbinden einer Header-Datei unter Dev-C++ :int_queue.cpp :
#include <cstdlib> #include <iostream> #include "Int_queue.h" using namespace std; int main(int argc, char *argv[]) { cout << "Start\n" ; system("PAUSE"); return EXIT_SUCCESS; }Int_queue.h :
#include <cstdlib> #include <iostream> using namespace std; class int_queue { private: int* first; int* stop; int* start; int* end; public: int_queue(); ~int_queue(); void append(int x){} }so hat das Ganze funktioniert, wenn ich aber z.B. in "int_queue.cpp" eine Zeile hinzufüge (z.B. eine weitere Ausgabe), dann gehts schon nicht mehr. Auch nicht wenn ich genau diese Zeile lösche

Fehlermeldung:
5 C:\Programme\Dev-Cpp\int_queue.cpp expected unqualified-id before "using"
5 C:\Programme\Dev-Cpp\int_queue.cpp expected,' or;' before "using"
C:\Programme\Dev-Cpp\Makefile.win [Build Error] [int_queue.o] Error 1Hab keine Ahnung was das sein kann.
Hoffe ihr könnt mir helfen, und vielleicht noch eine bessere Programmierumgebung empfehlen
Danke schon mal !
-
Was für eine Zeile fügst du an welcher Stelle der Datei ein?
(und dir ist hoffentlich klar, daß man Anweisungen nur im Rumpf einer Funktion einfügen kann? und daß du noch eine Implemetation für den Ctor und Dtor benötigst?)PS: Und ans Ende der Klassendeklaration gehört ein ;
-
NickDiamond schrieb:
[...]
int_queue.cpp :#include <cstdlib> #include <iostream> [...] using namespace std; [...] Int_queue.h : [code]#include <cstdlib> #include <iostream> using namespace std; [...][...]
Auch wenn die STL Header Include Guards haben sollte man sích entscheiden ob man diese in der .cpp oder .h schreibt.
Das using sollte am besten nur in der cpp stehen. Sonst ist das bei jeder anderen Datei die den Header einbindet auch der std-namespace ohne std:: verfügbar und das ist nicht unbedingt der sinn von Namespaces

Das hat aber nichts mit deinem Problem zu tun.Ich hab hier nicht den DevCpp oder eine andere IDE die den GCC benutzt aber der Borland-Compiler meckert nur über die - wie schon CStoll gesagt hat - nicht abgeschlossene Klassendeklaration. Wenn ich diese dann korrigiere gibts keine Probleme.
-
Ganz spontan:
class int_queue { ... } /* -> */ ; /* <- */
-
Autsch

es lag wohl wirklich nur am dummen ";" , sowas blödes ...
Die anderen "Probleme" oder sagen wir besser die Ungenauigkeiten die ihr angesprochen habt, sind eigentlich nur deshlab entstanden weil das Programm nicht lief, und ich halt jeden Fehler auschliessen wollte, aber da ich zu blöd war an den ";" zu denken, konnt ich da ja lange rumprobieren.
Vielen Dank an euch !
jetzt kann das Programm erweitert werden
-
Beliah schrieb:
Auch wenn die STL Header Include Guards haben sollte man sích entscheiden ob man diese in der .cpp oder .h schreibt.
Warum? Man bindet sie da ein, wo man sie braucht. Was interessiert mich denn in der cpp, was ein Header für Includes hat?
-
Bashar schrieb:
[...]
Warum? Man bindet sie da ein, wo man sie braucht. Was interessiert mich denn in der cpp, was ein Header für Includes hat?Natürlich bindet man die da ein wo man sie braucht. Ich finde es nur unnötig Dateien die man in einer Header-Datei eingebunden hat in der dazugehörigen cpp nochmal einzubinden.Natürlich kann man das machen wenn man sicher gehen will das das Programm noch kompiliert wenn man merkt das die Einbindung im Header gar nicht (mehr) nötig ist und das deswegen dort löscht.
Und solange die Header auch Include-Guards haben gibts ja auch keine Probleme.