Unresolved external '...' referenced from <PATH>.obj



  • Hallo zusammen,

    in Rahmen einer Projektarbeit bin ich auf die folgenden Probleme gestoßen:

    Error: Unresolved external 'Sparnormal::Sparnormal()' referenced from D:\PROGRAMMIERUNG\ECLIPSE WORKSPACE\SPARKONTO_2\SPARKONTO.OBJ
    Error: Unresolved external 'Kontokurrentkonto::Kontokurrentkonto()' referenced from D:\PROGRAMMIERUNG\ECLIPSE WORKSPACE\SPARKONTO_2\SPARKONTO.OBJ
    

    Hier die Aufgabenstellung:

    In einer Bank werden nicht nur Sparkonten geführt, sondern auch Kontokorrentkonten. In einer Analyse stellen wir fest, dass Kontokorrentkonten laufende Konten sind, bei denen der Kontoinhaber seub Konto auch überziehen kann. Bei der Zinsberechnung eines Kontokorrentkontos werden folglicherweise entweder Soll- oder Habenszinsen berechnet. Führen Sie eine objektorientierte Analyse unter der Voraussetzung durch, dass lediglich folgende Funktionalität zur Verfügung gestellt werden soll:
    - Einzahlung
    - Auszahlung
    - Kontostand
    - Zinsberechnung

    Hier meine Dateien:

    //-------Headerdatei: Sparkonto.h------------------------------------
    #ifndef Sparkonto_h
    #define Sparkonto_h
    
    class Sparkonto{
    	private:
    		string name, vorname;
    	public:
    		Sparkonto();
    		~Sparkonto();
    
    		void setName(string);
    		void setVorname(string);
    		string getName(void);
    		string getVorname(void);	
    };
    
    class Sparnormal : public Sparkonto{
    	private:
    		double Kapital, Endkapital, HabensZinsen;
    	public:
    		Sparnormal(string, string);
    		Sparnormal();
    		~Sparnormal();
    
    		void Einzahlung(double);
    		void Auszahlung(double);
    		void setHabensZins(double);
    		double Kontostand();			//double getKonto();
    
    		void rechneEndkapital();
    		double getEndkapital();	
    		//void rechneZinseszins();
    		//double getZinseszins();
    		//void setZinsen(double);
    		//double getZinsen();
    		//void rechneGesamtkonto();
    		//double getGesamtkonto();
    };
    
    class Kontokurrentkonto : public Sparkonto{
    	private:
    		double Kapital, Endkapital, HabensZinsen, SollZinsen;
    	public:
    		Kontokurrentkonto(string, string);
    		Kontokurrentkonto();
    		~Kontokurrentkonto();
    
    		void Einzahlung(double);
    		void Auszahlung(double);
    		void setHabensZins(double);
    		void setSollZins(double);
    
    		double Kontostand();			//double getKonto();
    		void rechneEndkapital();
    		double getEndkapital();	
    };
    #endif
    //-------------------------------------------------------------------
    
    //-------Klassendefinition: SparkontoFunk.cpp -----------------------
    #include <iostream.h>
    #include "Sparkonto.h"
    //-------------------------------------------------------------------
    Sparkonto :: Sparkonto ()  {}
    Sparkonto :: ~Sparkonto () {}
    
    string Sparkonto :: getName(void)          { return name; }
    string Sparkonto :: getVorname(void)       { return vorname;  }
    void Sparkonto :: setName(string N)     { name = N; }
    void Sparkonto :: setVorname(string V)  { vorname = V;  }
    
    Sparnormal :: Sparnormal(string N, string V){
    	setName(N);
    	setVorname(V);
    }
    
    Sparnormal :: ~Sparnormal() {}
    
    double Sparnormal :: Kontostand(void)  {	return Kapital; }   						//Kontostand = getKonto
    void Sparnormal :: Einzahlung(double einzahlen) { Kapital = Kapital + einzahlen; }
    void Sparnormal :: Auszahlung(double auszahlen) { Kapital = Kapital - auszahlen; }
    void Sparnormal :: setHabensZins(double zinssatz)     { HabensZinsen = zinssatz; }
    
    void Sparnormal::rechneEndkapital()	{Endkapital = Kapital + Kapital * (HabensZinsen/100);}
    double Sparnormal::getEndkapital()	{return Endkapital;}
    
    Kontokurrentkonto :: Kontokurrentkonto(string N, string V){
    	setName(N);
    	setVorname(V);
    }
    
    Kontokurrentkonto :: ~Kontokurrentkonto() {}
    
    double Kontokurrentkonto :: Kontostand(void)  {	return Kapital; }   						//Kontostand = getKonto
    void Kontokurrentkonto :: Einzahlung(double einzahlen)     { Kapital = Kapital + einzahlen; }
    void Kontokurrentkonto :: Auszahlung(double Auszahlung)    { Kapital = Kapital - Auszahlung; }
    void Kontokurrentkonto :: setHabensZins(double zinsen)     { HabensZinsen = zinsen; }
    void Kontokurrentkonto :: setSollZins(double sollzinssatz)   { SollZinsen =  sollzinssatz;}
    //-------------------------------------------------------------------
    
    //-------Programm: Sparbuch.cpp -------------------------------------
    #include <iostream.h>
    #include <iomanip.h>
    #include <conio.h>
    #include "Sparkonto.h"
    //-------------------------------------------------------------------
    #include "SparkontoFunk.cpp"
    //-----Variablen-----------------------------------------------------
    bool typ;
    int taste;
    string value;
    Sparnormal *SpNo[1];
    Kontokurrentkonto *KoKu[1];
    //-----Bildschirm_löschen--------------------------------------------
    void Bildschirm_loeschen(){
    	clrscr();
    	cout << "\n-------------------------------------------------------------------------------"
    		 << "\n              Erstellt von Stefan S., TAI09, September 2010"
    		 << "\n-------------------------------------------------------------------------------"
    		 << endl;
    }
    //-----Konto anlegen-------------------------------------------------
    void new_konto(){
    	do {
    		Bildschirm_loeschen();
    		cout << "\nWelche Kontoart wollen sie anlegen?"
    			 << "\n 1 - Sparkonto"
    			 << "\n 2 - Kontokurrentkonto"
    			 << "\nIhre Auswahl:";
    		cin  >> taste;
    
    		switch (taste){
    			case 1:	{ typ = false; } break;
    			case 2: { typ = true;  } break;
    			default:{ 	taste = 0; 
    						cout << "\nBItte geben Sie ein korrekten Menupunkt an!"; }
    		}
    	}while(taste==0);
    
    	if(typ==false){
    		SpNo[0]=new Sparnormal;
    		cout << "\nBitte Geben sie Ihren Namen an!"
    			 << "\n Name:    ";		cin >> value;  	SpNo[0]->setName(value);
    		cout << " Vorname: ";		cin >> value;	SpNo[0]->setVorname(value);
    	}else{
    		KoKu[0]=new Kontokurrentkonto;
    		cout << "\nBitte Geben sie Ihren Namen an!"
    			 << "\n Name:    ";		cin >> value;	KoKu[0]->setName(value);
    		cout << " Vorname: ";		cin >> value;	KoKu[0]->setVorname(value);
    	}
    	getch();
    }
    //-----Einzahlung----------------------------------------------------
    void Einzahlung_fkt(){
    	if(typ==false){
    
    	}else{
    	}
    }
    //-----Auszahlung----------------------------------------------------
    void Auszahlung_fkt(){
    	if(typ==false){
    
    	}else{
    	}
    }
    //-----Ende----------------------------------------------------------
    void Ende(){
    	delete SpNo[0];
    	delete KoKu[0];
    }
    //-----Main----------------------------------------------------------
    int main(){ 
    	new_konto();
    	Bildschirm_loeschen();
    
    	if (typ == false) cout << "Sparkonto";
    	else cout << "Kontokurrentkonto";
    
    	getch();
    	Ende();
    	return 0;
    }
    //-------------------------------------------------------------------
    

    Ich bedanke mich für eure Hilfe,

    Gruß Stefan



  • bin nicht unregistriert -.- kann man irgendwie den Post auf mich umlegen?



  • Wie wäre es mit ausprogrammiereren der zwei Standardkonstruktoren für Sparnormal und KontoKurrent... .

    Du deklarierst die zwar aber definierst sie nicht.

    so long



  • Und wo in deinem Code sind die beiden vermissten Funktionen definiert?



  • manni66 schrieb:

    Und wo in deinem Code sind die beiden vermissten Funktionen definiert?

    Das Problem ist, dass das Programm speziell bei diesem Fehler die Zeilen nicht angezeigt hat.

    ctor definieren schrieb:

    Wie wäre es mit ausprogrammiereren der zwei Standardkonstruktoren für Sparnormal und KontoKurrent... .

    Du deklarierst die zwar aber definierst sie nicht.

    so long

    Habe ich probiert, verändert aber mein Problem nicht, da der Compiler dann kein Ziel findet. Ich habe da testweise einfach mal die beiden Standardkonstruktoren "Sparnormal();" und "Kontokurrentkonto();" auskommentiert. Ergebnis ist folgende Fehlermeldung:

    Error E2285 D:\Programmierung\Eclipse workspace\Sparkonto_2\Sparkonto.cpp 42: Could not find a match for 'Sparnormal::Sparnormal()' in function new_konto()
    Error E2285 D:\Programmierung\Eclipse workspace\Sparkonto_2\Sparkonto.cpp 47: Could not find a match for 'Kontokurrentkonto::Kontokurrentkonto()' in function new_konto()
    


  • Jap ist klar da du ja neue Objekte anlegen versucht in diesen Zeilen die den Standard-Konstruktor aufrufen.

    Um es dir einfach zu machen

    Sparnormal::Sparnormal()
    {
    }

    KontoKurrentKonto::KontoKurrentKonto()
    {
    }

    fehlen in deinem Programm. Das meinte ich mit definieren oder ausprogrammieren.
    Was in den Konstruktoren geschehen soll musst du dann entscheiden.

    so long



  • Definieren wär besser als auskommentieren.. 🕶



  • Ahh, danke, das hat gefehlt. ^^
    Nicht mal mein Lehrer hat den Fehler entdeckt. ^^

    Thread kann geschlossen werden 😉


Anmelden zum Antworten