000
02.12.2004, 12:44 Uhr
enrico
|
Hallo, ich habe die drei Klassen Aktivitaet, Mitarbeiter und Projekt erstellt. Die Klasse Aktibitaet speichert Daten vom Typ Mitarbeiter in einer Liste und die Klasse Projekt Daten vom Typ Aktivitaet in einer Liste. Wenn ich nun versuche über die Main ein Projekt mit Mitarbeitern und Aktivitaeten zu erstellen krige ich den Fehler nichtaufgelöstes externes Symbol "public: void __thiscall Projekt::pushm" und ich hab kein Plan wo der Fehler ist. Kann mir dabei vielleicht jemand helfen?
hier die Klasse Mitarbeiter:
C++: |
#ifndef _MITARBEITER_ #define _MITARBEITER_ #include "Datum.h" #include<iostream> #include<string> #include<iomanip> using namespace std;
class Mitarbeiter{ private: string name; string vorname; Datum von; Datum bis; string rolle; Mitarbeiter* next; public: Mitarbeiter(string n = "Unbekannt", string vn = "Unbekannt", short tg = 1, short mn = 1, short j = 1900, Mitarbeiter* ptr = NULL):name(n), vorname(vn),von(1,1,1900), bis(1,1,1900), next(ptr){} ~Mitarbeiter(void){} Mitarbeiter* getnext(){return next;} void setname(string i_name, string i_vname){name = i_name; vorname = i_vname;} void setrolle(string i_rolle){rolle = i_rolle;} void setvon(short, short, short); void setbis(short, short, short); string getname(){return name;} string getvorname(){return vorname;} void display(); friend class Aktivitaet; friend class Projekt; };
#endif
#include "Datum.h" #include "Mitarbeiter.h" #include <iostream> #include <string> using namespace std;
void Mitarbeiter::setvon(short tg, short mn, short j){
if ((tg < 32 && tg > 0) && (mn < 13 && mn > 1)){ von.init(tg, mn, j); } }
void Mitarbeiter::setbis(short tg, short mn, short j){ if ((tg < 32 && tg >0) && (mn <13 && mn > 1)){ bis.init(tg, mn, j); } }
void Mitarbeiter::display(){
cout<<"Mitarbeitername; "<<vorname<<", "<<name<<endl; cout<<"An der Aktivitaet beschäftigt von: "; von.print(); cout<<" bis: "; bis.print(); cout<<endl; cout<<"Rolle im Projekt: "<<rolle<<endl<<endl; }
|
Hier die Klasse Aktivitaet:
C++: |
#ifndef _AKTIVITAET_ #define _AKTIVITAET_ #include "Mitarbeiter.h" #include<iostream> #include<string> #include<iomanip> using namespace std;
class Aktivitaet{ private: string name; Datum start; Datum ende; double soll; double ist; Mitarbeiter* first; Mitarbeiter* last; Aktivitaet* next; public: Aktivitaet(string n = "Unbekannt", short tg = 1, short mn = 1, short j = 1900, double i = 0.0, double s = 0.0, Aktivitaet* ptr = NULL, Mitarbeiter* ptrm = NULL):name(n), start(tg, mn, j), ende(tg, mn, j),soll(s), ist(i), next(ptr), first(ptrm), last(ptrm){} ~Aktivitaet(void){} Aktivitaet* getnext(){return next;} void setname(string i_name){name=i_name;} void setist(double w){ist = ist + w;} void setsoll(double w){soll = w;} void setstart(short, short, short); void setende(short, short, short); string getname(){return name;} void pushm(string n, string vn, string r); void displayMA(); void display(); friend class Projekt; };
#endif
#include "Mitarbeiter.h" #include "Aktivitaet.h" #include <string> #include <iostream> using namespace std;
void Aktivitaet::pushm(string i_n, string i_vn, string i_r){ Mitarbeiter* m1 = new Mitarbeiter(); m1->setname(i_n, i_vn); m1->setrolle(i_r); if (last==NULL) //falls das letzte Element Null ist... first=last=m1; //...erstes=letztes Element=neues Element... else //...ansonsten... last->next=m1, last=m1; }
void Aktivitaet::setstart(short tg, short mn, short j){ if ((tg < 31 && tg > 0) && (mn < 13 && mn > 0)){ start.init(tg, mn, j); } }
void Aktivitaet::setende(short tg, short mn, short j){ if ((tg < 31 && tg > 0) && (mn < 13 && mn > 0)){ ende.init(tg, mn, j); } }
void Aktivitaet::displayMA(){ Mitarbeiter* ptr; ptr = first; while(ptr != NULL){ ptr->display(); ptr = ptr->getnext(); } }
void Aktivitaet::display(){ cout<<"Aktivitaetsbezeichnung: "<<name<<endl; cout<<"Die Aktivitaet dauert vom: "; start.print(); cout<<" bis: "; ende.print(); cout<<endl; cout<<"Die Soll-Kosten der Aktivitaet betragen: "<<soll<<endl; cout<<"Die Ist-Kosten der Aktivitaet betragen: "<<ist<<endl; cout<<"Folgende Mitarbeiter sind an dem Projekt beteiligt: "<<endl<<endl; displayMA(); }
|
Und noch die Klasse Projekt:
C++: |
#ifndef _PROJEKT_ #define _PROJEKT_ #include "Mitarbeiter.h" #include "Aktivitaet.h" #include<iostream> #include<string> using namespace std;
class Projekt : Aktivitaet { private: string name; Datum von; Datum bis; double soll; double ist; Aktivitaet* first; Aktivitaet* last; public: Projekt(string n = "Unbekannt", short tg = 1, short mn = 1, short j = 1900, double s = 0.0, double i = 0.0, Aktivitaet* ptr = NULL):name(n), von(tg, mn, j), bis(tg, mn, j), soll(s), ist(i), first(ptr), last(ptr){} ~Projekt(void){} void pusha(string n); void pushm(string n, string vname, string rolle); void display(); };
#endif
#include "Mitarbeiter.h" #include "Aktivitaet.h" #include "Projekt.h" #include <iostream> #include <string> using namespace std;
void Projekt::pusha(string i_n){ Aktivitaet* a1 = new Aktivitaet(); a1->setname(i_n); if (last==NULL) //falls das letzte Element Null ist... first=last=a1; //...erstes=letztes Element=neues Element... else //...ansonsten... last->next=a1, last=a1; }
void Projekt::display(){ Aktivitaet* ptra; ptra = first; while(ptra->getnext() != NULL){ cout<<"Aktivitaetsname: "<<ptra->getname()<<endl; ptra=ptra->getnext(); } }
|
und noch die Main:
C++: |
#include "Mitarbeiter.h" #include "Aktivitaet.h" #include "Projekt.h" #include<iostream> #include<iomanip> #include<string> using namespace std;
void main(){ string aname; string mname, mvname; string pname; Aktivitaet a; Projekt pro; int n, m;
cout<<endl; cout<<"Bitte geben sie einen Projektnamen ein: "; cin>>pname; cout<<"Wieviel Aktivitaeten wollen sie dem Projekt zuordnen: "; cin>>n; for (int i = 1; i < n; i++){ cout<<"Bitte geben sie einen Aktivitaetsnamen ein: "; cin>>aname; pro.pusha(aname); cout<<"Wieviele Mitarbeiter wollen sie der Aktivitaet zuordnen: "; cin>>m; for (int j = 1; j <= m; j++){ cout<<"Bitte geben Sie einen Mitarbeiternamen ein: "; cin>>mname; cout<<"Bitte Vorname eingeben: "; cin>>mvname; pro.pushm(mname, mvname, "Leiter"); } } pro.display(); }
|
|