ofstream in Funktion übergeben



  • Hi zusammen

    Ich möchte gerne ein ofstream erstellen und dies dann über pointer oder Referenzen in einer Funktion Füllen.

    Das ganze würde dann so aussehen, jedoch weis ich nicht wie ich das mit den Pintern lösen soll?!

    #include "stdafx.h"
    #include <iostream>
    #include <fstream> 
    using namespace std;
    
    bool fill(ofstream);
    
    int main(int argc, char* argv[])
    {
    
    	ofstream* output;
    
    	output.open ("log.txt", ios::app);
    
    	for(int x = 0; x < 1000; x++)
    	{
    	fill(&output);
    	}
    	return 0;
    }
    
    bool fill(ofstream *output)
    {
    	for (int x = 0; x < 100; x++)
    	{
    		output << x << endl;
    	}
    	return true;
    }
    

    Hoffe ihr könnt mir sagen, wie das geht.

    Danle



  • Da stimmt ja so viel nicht 🙄
    Deklaration und Definition von fill sind unterschiedlich.
    Einen Pointer auf ofstream deklarieren und dann wie ein value verwenden wollen.
    Ich krieg da einiges an Fehlermeldungen:

    g++ main.cpp -o main
    main.cpp:1:21: Fehler: stdafx.h: Datei oder Verzeichnis nicht gefunden
    main.cpp: In function »int main(int, char**)«:
    main.cpp:13: Fehler: Abfrage des Elementes »open« in »output«, das vom Nicht-Klassentyp »std::ofstream*« ist
    main.cpp:17: Fehler: Umwandlung von »std::ofstream**« in nicht-skalaren Typen »std::ofstream« angefordert
    main.cpp: In function »bool fill(std::ofstream*)«:
    main.cpp:26: Fehler: ungültige Operanden der Typen »std::ofstream*« und »int« für binäres »operator<<«
    

    Weißt du denn was Referenzen sind? Weißt du was Pointer sind? Weißt du wie man Pointer verwendet?
    Hier das schnell angepasste Programm, das auch funktioniert:

    #include <iostream> 
    #include <fstream> 
    using namespace std; 
    
    bool fill(ofstream &); 
    
    int main(int argc, char* argv[]) 
    { 
    
        ofstream output; 
    
        output.open ("log.txt", ios::app); 
    
        for(int x = 0; x < 1000; x++) 
        { 
        fill(output); 
        } 
        return 0; 
    } 
    
    bool fill(ofstream &output) 
    { 
        for (int x = 0; x < 100; x++) 
        { 
            output << x << endl; 
        } 
        return true; 
    }
    


  • Wäre es nicht normal statt fill da den ofstream wieder zurückzugeben um Verkettungen zu ermöglichen?



  • padreigh schrieb:

    Wäre es nicht normal statt fill da den ofstream wieder zurückzugeben um Verkettungen zu ermöglichen?

    Meinst du, statt einem Bool zurückgeben den Ofstream zurückgeben`?



  • Egal.. hat sich erledigt. Funktioniert wie es soll.


Anmelden zum Antworten