Seltsames include-Problem
-
N'Abend :)!
Wollte die erste objektorientierte Laborübung von der FH zu Hause ausprogrammieren und stoße auf seltsamste Probleme beim Kompilieren. Hier mal die Dateien:
Project1.cpp
#include <iostream> #include "queue.h" int main() { jobList *aList; //Queue char aText[255]; //Eingabe std::cout << "Printerqueue... Text eingeben, um neue Items in die Queue einzufügen; mit Text 'end' Eingabe abbrechen" << std::endl; while (1) { //Endlosschleife aList = new jobList; std::cin >> aText; //Text einlesen if (strcmp(aText, "end") == 0) //Keine weitere Eingabe mehr break; //=> Schleife abbrechen aList.Push(aText); //Job pushen //showqueue(); //Queue anzeigen } std::cout << std::endl << "Ersten Job drucken..." << std::endl; aList.Pop(); //Einen Job aus der Queue holen (zu Testzwecken) //showqueue(); //Queue anzeigen delete jobList; //Queue zerstören system("pause"); return 0; }queue.cpp
#include <iostream> #include "queue.h" #include "job.h" /* void showqueue() { int i; std::cout << std::endl << "Jobliste:" << std::endl; for (i = 0; i < jobcount; i++) { std::cout << "Job #" << i + 1 << std::endl; std::cout << "PID: " << jobList[i].pid << std::endl; std::cout << "Text: " << jobList[i].szText << std::endl << std::endl; } } */ jobList::jobList() { //Konstruktor LastPoped = NULL; jobCount = 0; //Keine Jobs in der Queue } jobList::~jobList() { //Destruktor if (LastPoped != NULL) delete LastPoped; //Speicher von letzten gepopten Element freigeben } int jobList::getjobCount() { return jobcount; } int jobList::Push(char* Text) { //Job in die Queue einfügen CPJob *job = new CPJob(jobcount + 1, Text); //Neuen Job erzeugen... jobList[jobcount] = job; //...und in die Queue einfügen return ++jobcount; //Jobcount erhöhen; Index zurückgeben, daher ++x und nicht x++ } CPJob* CPJob::Pop(){ int i; if (LastPoped != NULL) //Vorher gepoptes Element freigeben delete LastPoped; LastPoped = jobList[0]; for (i = 1; i < jobcount; i++) //Jobs nach hinten verschieben in Queue jobList[i - 1] = jobList[i]; jobcount--; //Anzahl Jobs in Queue verringern return LastPoped; //Job zurückgeben } CPJob* CPJob::getJob(int index) { if (index < jobCount) //Index-Check return jobList[index]; else return NULL; //NULL zurückgeben bei ungültigem Index }queue.h
#ifndef queueheader #define queueheader #include "job.h" class jobList { private: CPJob* Items[10]; CPJob* LastPoped; int jobCount; //Anzahl Jobs public: int Push(char* Text); CPJob* Pop(); int getjobCount(); CPJob* getJob(int index); jobList(); ~jobList(); }; #endifjob.cpp
#include <iostream> #include "job.h" CPjob::CPjob(int Pid, char* Text) { //Konstruktor szText = NULL; //Text initialisieren (damit bei setText delete nicht aufgerufen wird) setText(Text); //Text setzen lPid = Pid; } CPjob::~CPjob() { //Destruktor delete []szText; //Speicher für Text freigeben } void CPjob::setText(char* dummy) { if (szText == NULL) delete []szText; //Speicher für Text freigeben falls notwendig szText = new char[std::strlen(dummy) + 1]; //Text kopieren std::strcpy(szText, dummy); } char* CPjob::getText() { return szText; } long CPjob::getPid() { return lPid; }job.h
#ifndef jobheader #define jobheader class CPjob { private: char* szText; long lPid; public: CPjob(int Pid, char* Text); ~CPjob(); void setText(char* dummy); char *getText(); long getPid(); }; #endifIch erhalte mit Visual Studio als auch mit DevCPP folgenden Fehler:
10 C:\FH\OOPLB\Queue\queue.h expected `;' before '*' tokenDas ergibt allerdings keinen Sinn. Wenn ich danach noch einmal kompiliere erhalte ich den Fehler
2 C:\FH\OOPLB\Queue\Project1.cpp In file included from Project1.cppIrgendjemand eine Idee, was ich mit den includes falsch mache (ich vermute nämlich, dass da der Fehler liegt)?
Dust Signs
PS. Das meiste habe ich ohne zu testen programmiert, weil das Programm bald abgegeben werden muss. Es geht mir nur darum, den seltsamen Compilerfehler zu beheben.
-
in job.h: CPjob
in queue.h: CPJobgroß-/kleinschreibung u know
2 C:\FH\OOPLB\Queue\Project1.cpp In file included from Project1.cpp
das is übrigends kein fehler sondern nur ne zeile die angeben soll woher ein bestimmter fehler/warnung herkommt
-
Ich komme von der Delphi-Seite her - von demher übersehe ich solche Fehler gerne. Vielen Dank. Bleibt nur noch die Frage, was an dem delete in der main falsch ist...33 C:\FH\OOPLB\Queue\Project1.cpp expected primary-expression before ';' tokenDust Signs
PS. Nettes Forum hier; glaub, ich werd mich mal registrieren

-
Entschuldigung, hat sich erledigt... vielen Dank für die Hilfe

Dust Signs