Fehlersuche
-
bei mir klappt in Sachen Vererbung etwas nicht, hoffe jemand von euch weis an was es liegt.
1. Das Programm
//-------------------------------------------------------------------- ------- #include <condefs.h> #include <iostream.h> #include <iomanip.h> #include <conio.h> #include "H:\Ct\C++ 13\Objektorientiert\Korrentkonten\Korrentkonto.h" //-------------------------------------------------------------------- ------- USEUNIT("Korrentkonto1.cpp"); //-------------------------------------------------------------------- ------- int main() { Sparkonto Sparkonto1(2.0, 1, "ICH", 0.0); }
2. Die Unit
/-------------------------------------------------------------------- ------- #include "iostream.h" #include "H:\Ct\C++ 13\Objektorientiert\Sparkonto_Kontok\Korrentkonten.h" //---------------------- Basisklasse Bankkonten ---------------------------- Bankkonto :: Bankkonto(int NR, string Inh, double Kst) { Nummer = NR; Kontoinhaber = Inh; Kontostand = Kst; } Bankkonto :: Bankkonto() { } Bankkonto :: ~Bankkonto() { } void Bankkonto :: Einzahlung(double diff) { Kontostand = Kontostand + diff; } double Bankkonto :: Kontostand_ausgeben(void) { cout << Kontostand; } //-------------------------------- Abgeleitete Klassen ------------------------ //-------------------------------- Klasse Sparkonto --------------------------- Sparkonto :: Sparkonto(double Zi, int NR, string Inh, double Kst ):Bankkonto(NR,Inh,Kst) <<<---- HIER STIMMT WAS NICHT { Zins = Zi; } Sparkonto :: Sparkonto() { } Sparkonto :: ~Sparkonto() { } void Sparkonto :: Auszahlung(double Aus) { Kontostand = Kontostand - Aus; if(Kontostand < 0) { Kontostand = 0; cout << "revoir de la plus"; } } void Sparkonto :: Zinsberechnung(void) { double Zinsen = Kontostand * Zins/100; Kontostand = Kontostand + Zinsen; } //-------------------------------------- ENDE Klasse Sparkonten --------------- //------------------------------ Klasse Kontokorrentkonto --------------------- Kontokorrentkonto :: Kontokorrentkonto(double Habenzins, double Sollzins, int NR, string Inh, double Kst) : Bankkonto(int NR, string Inh, double Kst) { } Kontokorrentkonto :: Kontokorrentkonto() { } Kontokorrentkonto :: ~Kontokorrentkonto() { } void Kontokorrentkonto :: Auszahlung(double Aus) { Kontostand = Kontostand - Aus; } void Kontokorrentkonto :: Zinsberechnung(void) { if(Kontostand < 0) // SOLL { double Zinsen = Kontostand * Sollzins/100; Kontostand = Kontostand - Zinsen; } else { double Zinsen = Kontostand * Habenzins/100; Kontostand = Kontostand + Zinsen; } }
Und die Headerdatei
//******* Headerdatei Korrentkonten.h #ifndef Korrentkonten_h #define Korrentkonten_h //********* Basisklasse Bankkonto ****************** class Bankkonto { private: int Nummer; string Kontoinhaber; double Kontostand; public: // Konstruktor Bankkonto(int, string, double); Bankkonto(); // Destruktor ~Bankkonto(); // Methoden void Einzahlung(double); double Kontostand_ausgeben(); }; //********* Abgeleitete Klassen ********************** class Sparkonto : public Bankkonto { private: double Zins; public: // Konstruktor Sparkonto(double, int, string, double); Sparkonto(); //Destruktor ~Sparkonto(); // Methoden void Auszahlung(double); void Zinsberechnung(void); }; class Kontokorrentkonto : public Bankkonto { private: double Habenzins; double Sollzins; public: void Auszahlung(double); void Zinsberechnung(void); }; #endif
Fehlermeldung
[C++ Fehler] Korrentkonto1.cpp(39): E2316 'Sparkonto::{(double,int,string,double)' ist kein Element von 'Sparkonto'.
Also irgendetwas wird generell nicht weiter vererbt, da sind auch noch duzente andere Fehlermeldungen, die da heißen
[C++ Fehler] Korrentkonto1.cpp(65): E2247 Zugriff auf 'Bankkonto::Kontostand' nicht möglich.
Is aber klar, denn es wurde ja auch kein Konto angelegt, doch warum?
MfG
-
Fodoodo schrieb:
'Sparkonto::{(double,int,string,double)' ist kein Element von 'Sparkonto'.
Lass beim Aufruf des Basisklassenkonstruktors die Typen weg.
Korrentkonto1.cpp(65): E2247 Zugriff auf 'Bankkonto::Kontostand' nicht möglich.
Kontostand ist private. Dadurch haben abgeleitete Klassen keinen Zugriff.
-
muss das auch nicht:
Sparkonto :: Sparkonto(double Zi, int NR, string Inh, double Kst ): Bankkonto::Bankkonto(NR,Inh,Kst)
heißen?
dann sollte es eigentlich klappen....