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();
    
    };
    
    #endif
    

    job.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();
    
    };
    
    #endif
    

    Ich erhalte mit Visual Studio als auch mit DevCPP folgenden Fehler:

    10 C:\FH\OOPLB\Queue\queue.h expected `;' before '*' token
    

    Das 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.cpp
    

    Irgendjemand 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: CPJob

    groß-/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 ';' token
    

    Dust Signs

    PS. Nettes Forum hier; glaub, ich werd mich mal registrieren 🙂



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

    Dust Signs


Anmelden zum Antworten