ofstream Konstruktor Probleme



  • Hallo, ich habe ein Problem mit einem einfachen Header:

    #include <fstream>
    #include <string>
    #include <cstdlib>
    
    using namespace std;
    
    class Logfile
    {
    private:
        ofstream file;
    public:
        Logfile()
        {
        file("logfile.txt");
        }
        Logfile(string filename)
        {
        file(filename);
        }
    //usw.
    

    Die Konstruktoren werden vom Compiler bemängelt:

    logger.h:29: Fehler: keine Übereinstimmung für Aufruf von »(std::ofstream) (const char [12])«

    bzw.

    logger.h:33: Fehler: keine Übereinstimmung für Aufruf von »(std::ofstream) (std::string&)

    Verstehe den Grund nicht ganz. Ich will es ermöglichen, dass entweder ein File mit Standardnamen erzeugt wird, oder der Name im Konstruktor übergeben werden kann. Wieso wird das so nicht akzeptiert?



  • #include <fstream>
    #include <string>
    #include <cstdlib>
    
    using namespace std;
    
    class Logfile
    {
    private:
        ofstream file;
    public:
        Logfile() : file("logfile.txt")
        {
        }
        Logfile(string filename) : file(filename.c_str()) // Bin net sicher, obs ohne .c_str() nicht auch geht
        {
        }
    //usw.
    


  • und nun noch ein bischen anders

    #include <fstream>
    #include <string>
    #include <cstdlib>
    
    //using namespace std;  //sollte nie in header-Dateien verwendet werden
    
    class Logfile
    {
    private:
        std::ofstream file;
    public:
    //    Logfile() : file("logfile.txt") {} // wird vom anderen Konstruktor mit erledigt
        Logfile(const std::string& filename = "logfile.txt") : file(filename.c_str()) {} // Bin net sicher, obs ohne .c_str() nicht auch geht // nein, außerdem Übergabe als const Referenz
    


  • Danke Jungs!!!


Anmelden zum Antworten