Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Nichtaufgelöstes externes Symbol

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
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();
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.12.2004, 12:56 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


habt ihr die files auch alle zu eurem projekt hinzugefügt... oder habt ihr einfach nur das file in dem die mainmehtode drinsteht compiliert?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.12.2004, 13:00 Uhr
~freshman_at_work
Gast


wo ist denn die Definition der Methode void pushm(string n, string vname, string rolle);
in der Klasse class Projekt : Aktivitaet ???
hast du wohl vergessen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.12.2004, 13:02 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@freshman
hast du etwa den ganzen quellcode gelesen?

--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.12.2004, 13:02 Uhr
Spacelord
Hoffnungsloser Fall


Naja,
ich sehe da auch keine Implementierung von pushm....

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.12.2004, 13:09 Uhr
enrico



Daran kanns natürlich gelegen haben:-(
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
02.12.2004, 13:13 Uhr
enrico



Wenn ich jetzt die pushm genauso wie in der Klasse Aktivitaet auch in der Klasse Projekt implementiere krieg ich doch aber ein Problem weil first und last in beiden Klassen existiert aber einmal ein Zeiger auf einen Mitarbeiter und einmal auf eine Aktivitaet ist??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
02.12.2004, 13:18 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


warum tust du dir das überhaupt freiwillig mit den selbst gebastelten listen an? brauchst doch z.b. nur std::list oder std::vector verwenden und kanns das speichermanagement getrost vergessen
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
02.12.2004, 13:26 Uhr
enrico



Naja ist so ein Projekt vom Studium aus, ich glaub nicht das unser Prof. davon so begeistert wäre, ausserdem hab ich davon auch kein Plan. Wenn ich nur die Aktivitaeten nehme und da Mitarbeiter in ne Liste schreibe geht ja auch alles, wird wohl an der gleichen Bezeichn ung(first, last) liegen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
02.12.2004, 16:17 Uhr
Tommix



Hallo,
ich denke mal, es muß

C++:
class Projekt : public Aktivitaet


heißen, weil

Zitat von MSDN:

Default access of a base class is private for classes and public for structures.



Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: