Klassr zum ein-und ausgeben



  • ich bin grad dabei mir meine eigene Klasse zu machen, aber ich komm nicht weiter.

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    
    class ein_und_ausgabe
    {
    	fstream file;
    	string dateiname;
    	string ausgabe;
    
    	ein_und_ausgabe();
    	void schreiben(string i);
    	void schließen();
    
    };
    
    ein_und_ausgabe::ein_und_ausgabe()
    {
    	dateiname = "test";
    	ausgabe = "wer";
    	file.open(dateiname, ios_base::out | ios_base::binary);
    }
    
    void ein_und_ausgabe::schreiben(string i)
    {
    	file << i;
    }
    
    void ein_und_ausgabe::schließen()
    {
    	file.close();
    }
    
    int main()
    {
    	ein_und_ausgabe i;
    
    	i.ausgabe = "wer";
    	i.schreiben();
    	schließen(); // kann man das so machen??
    
    	return 0;
    }
    

    leider funkioniert das in main alles nicht und visuall c++ sagt mir, dass auf alles bis auf schließen() nicht zugeriffen werden kann.
    was hab ich falsch gemacht??

    danke schon mal im vorraus

    gucky



  • In der Klasse sind per Default alle Member privat. Also entweder class durch struct ersetzen oder die Funktionen public machen.

    class ein_und_ausgabe
    {
        fstream file;
        string dateiname;
        string ausgabe;
    public:
        ein_und_ausgabe();
        void schreiben(string i);
        void schließen();
    };
    


  • danke, das war der eine fehler, aber kann ich schließen() aufrufen??



  • Klar, i.schließen(); 😉



  • auch wenn ich i garnicht brauche bem schließen() ??



  • Gucky schrieb:

    auch wenn ich i garnicht brauche bem schließen() ??

    Doch, du brauchst.
    i.schließen() macht ja (i.file).close()



  • class ein_und_ausgabe
    {
    public:
      void schließen();
      // ...
    };
    

    Das ist doch eine Memberfunktion. schließen() geht nur, wenn du eine freie Funktion "schließen" definiert hast. Du meinst aber sicher i.schließen(). Generell solltest du dein Konzept aber noch einmal überdenken. Für so etwas gibt es Kon-und Destruktoren, file.close() brauchst du auch nicht direkt selber aufrufen.
    Und Buchstaben wie 'ß' oder Diakritika (ä,ö,ü etc.) würde ich im Code nicht schreiben.



  • ok

    ein anderes problem ist, es wird nichts in die datei geschrieben.
    ich find leider nicht das problem, woran es liegt.



  • problem hat sich erledigt

    trotzdem noch einaml danke



  • eine aller letzte frage noch:

    wenn ich die klasse in eine headeerdatei packe, kann ich nicht mehr normal darauf zugreifen (z. B. ein_und_ausgabe i)
    jetzt meine frage, wie kann ich das machen??



  • Hast du die Headerdatei denn mittels

    #include "ein_und_ausgabe.h" // oder wie auch immer deine Datei heißt
    

    eingebunden?



  • ja funktioniert auch alles

    mein visual c++ hat etwas rumgesponnen


Anmelden zum Antworten