Vererbung
-
Hallo Forum,
ich fange seit Monaten wieder mit C++ an und versuche ein Programm mit Vererbung aufzusetzen, nur leider klasppt das nicht was ich gerne hätte.
Könnt ihr mir helfen?
#include <iostream> #include <fstream> #include <iomanip> using namespace std; class einlesen{ protected: string buffer; public: void read(){ ifstream file("hallo_Testdatei.txt"); getline(file,buffer); cout << buffer << endl; file.close(); } }; class bearbeiten: public einlesen { //damit ich auf den Dateiinhalt zugreifen kann private: public: void ausgeben() { cout << "Klasse bearbeiten : " << buffer << endl; } };
Die Funktion ausgeben() gibt nicht den Buffer aus , sondern gar nix. Habt ihr einen Tipp??
Lg Caro
-
Zeig mal den Code wie du die Klassen benutzt. Ich habe schwer den Verdacht, dass du dort einen Fehler hast.
-
Du rufst einlesen::read niemals auf, also ist buffer default-konstruiert, d. h. leer.
-
hier ist der gesamte Code:
#include <iostream> #include <fstream> #include <iomanip> using namespace std; class einlesen{ protected: string buffer; public: void read(){ ifstream file("hallo_Testdatei.txt"); getline(file,buffer); cout << buffer << endl; file.close(); } }; class bearbeiten: public einlesen { //damit ich auf den Dateiinhalt zugreifen kann private: string new_buffer; public: void ausgeben() { cout << "Klasse bearbeiten : " << buffer << endl; } }; int main(){ einlesen e; e.read(); bearbeiten b; b.ausgeben(); return 0; }
-
b und e sind zwei unterschiedliche Objekte und haben nichts miteinander zu tun.
-
e
undb
sind zwei unterschiedliche Objekte. Was du überread
eingelesen hast, steht ine
. Inb
dagegen ist nichts, weil du noch gar nichts in dieses Objekt eingelesen hast.[/c]Grüssli
-
Achso...heisst das das ein Objejt zuviel ist?
-
Ja... du musst b.read() aufrufen. Die Idee der Vererbung ist ja, dass die abgeleitete Klasse die Basisklasse schon beinhaltet.
-
Ja, mach
b.read();
b.ausgeben();dann sollte es klappen.
-
Danke, jetzt hab ich es selber geschafft.:-)
Aber ohne eure Hilfe säss ich noch bis zum Abend da.
-
Hallo fischldi,
lies in deinem Buch aber trotzdem nochmal die Kapitel bzgl. Klassen, Vererbung & co nach.
Da du die Klassen nach Verben benannt hast, glaube ich, dass du da irgendwie was falsch verstanden hast.