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


  • Mod

    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;
    }
    

  • Mod

    b und e sind zwei unterschiedliche Objekte und haben nichts miteinander zu tun.


  • Administrator

    e und b sind zwei unterschiedliche Objekte. Was du über read eingelesen hast, steht in e . In b 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.


Log in to reply